출처

진로 고민이 엄청나게 많았고 제일 하고 싶은 것부터 곰곰히 우선순위를 정하기로 하였습니다. 지금 당장 백엔드를 깊이 있게 공부할 시간은 없지만 적어도 데이터 분석하면서 필요한 정도의 기초적인 데이터 베이스와 sql 문법은 공부하기로 하였습니다. 데이터베이스의 원리와 응용 강의를 통해서 큰 도움을 받을 수 있었습니다.

제가 학부에서 제대로 공부한 것도 아니고, 매우 속성으로 기초만 강의를 들었으나 본격적으로 sql 공부 전 1강부터 12강까지의 내용을 요약해보려고 합니다. 본 내용은 해당 강의를 압축해서 제가 정리한 것이고 모든 자료 관련 내용 출처는 데이터베이스의 원리와 응용 입니다.

1강

데이터 : 현실 세계에서 단순히 관찰하거나 측정한 값

정보 : 의사결정에 활용할 수 있도록 데이터를 처리한 결과물

데이터베이스 : 특정 조직의 여러 사용자가 공유하여 사용할 수 있도록 통합해서 저장한 운영 데이터의 집합 => 데이터들의 집합

2강

데이터베이스 관리 시스템 : 파일 시스템의 문제를 해결하기 위해 제시된 소프트웨어. 조직에 필요한 데이터를 데이터베이스에 통합하여 저장하고 관리함

” 내가 데이터를 관리해줄게 ! “

2세대 데이터베이스 관리 시스템 : 데이터 베이스를 테이블 형태로 구성

ex. 오라클, mySQL

3강

사용자 -> 데이터 언어 -> 데이터베이스 관리 시스템 -> 데이터베이스

스키마 : 데이터베이스에 저장되는 데이터 구조와 제약 조건을 정의한 것

인스턴스 : 스키마에 따라 데이터베이스에 실제로 저장된 값

No name ssn salary dept
1 Joseph 111-11-1111 40000 3

No,name,ssn,salary,dept 는 스키마. 1,Joseph,111~,40000,3 은 인스턴스

3단계 데이터 베이스 구조

1) 외부 단계 : 개별 사용자의 관점

2) 개념 단계 : 조직 전체의 관점

3) 내부 단계 : 물리적인 저장 장치의 관점

IMG_E40251D294BD-1

하위 스키마를 변경하더라도 상위 스키마가 영향을 받지 않아야 함 ! (데이터 독립성)

데이터 사전 : 데이터 베이스에 저장되는 데이터에 관한 정보. 스키마, 사상 정보, 다양한 제약 조건 등을 저장.

데이터 디렉토리 : 데이터 사전에 있는 데이터에 실제로 접근하는 데 필요한 위치 정보를 저장하는 시스템 데이터 베이스

데이터 베이스 사용자

  • 데이터베이스 관리자 : 데이터베이스 시스템을 운영하고 관리
  • 일반 사용자 : 데이터베이스에 접근하여 데이터를 조작
  • 응용 프로그래머 : 데이터 언어를 삽입하여 응용 프로그램을 작성

데이터 언어

  • 데이터 정의어 : 스키마를 정의하거나 수정 또는 삭제를 하기 위해서 사용
  • 데이터 조작어 : 데이터의 삽입,삭제,수정,검색 등의 처리를 요구하기 위해서 사용
  • (데이터 제의어 : 내부적으로 필요한 규칙이나 기법을 정의하기 위해서 사용) 보안을 위해서

04 - 05

데이터베이스 설계 단계

IMG_9FAD54E7489A-1

E-R 다이어그램 용어

다중 값 속성 : 값을 여러 개 가질 수 있는 속성 , E-R 다이어그램에서 이중 타원으로 표현 ex. 연락처

키 속성 : 각 객체의 인스턴스를 식별하는 데 사용되는 속성. E-R 다이어그램에서 밑줄로 표현

관계 : 개체와 개체가 맺고 있는 의미 있는 연관성

1:1 관계 : A 개체도 B 개체에서 하나만 선택 가능. B 개체도 A 개체에서 하나만 선택 가능.

1:n 관계 : A 개체는 B 개체에서 여러 개 선택 가능. B 개체는 A 개체에서 하나만 선택 가능.

n:m 관계 : A 개체는 B 개체에서 여러 개 선택 가능. B 개체도 A 개체에서 여러 개 선택 가능.

필수적 참여 : 모든 개체 인스턴스가 관계에 반드시 참여해야 하는 것을 의미 ex. 고객 개체가 책 개체와의 구매 관계에 필수적으로 참여

E-R 다이어그램에서 이중선으로 표현

약한 개체 : 다른 개체의 존재 여부에 의존적인 개체. 약한 개체는 이중 사각형으로 표현하고 약한 개체가 오너 개체와 맺는 관계는 이중 마름모로 표현.

06

관계 데이터 모델의 기본 용어

릴레이션 : 하나의 개체에 관한 데이터를 2차원 테이블의 구조로 저장한 것.

속성 : 릴레이션의 열

튜플 : 릴레이션의 행

도메인 : 하나의 속성이 가질 수 있는 모든 값의 집합

IMG_48E44D8D69A0-1

릴레이션의 구성

릴레이션 스키마 : 릴레이션의 논리적 구조. 릴레이션의 이름과 릴레이션에 포함된 모든 속성 이름으로 정의

릴레이션 인스턴스 : 어느 한 시점에 릴레이션에 존재하는 튜플들의 집합

IMG_BCF1DC11BFD5-1

데이터베이스의 구성

데이터베이스 스키마 : 데이터베이스를 구성하는 릴레이션 스키마의 모음

데이터베이스 인스턴스 : 데이터베이스를 구성하는 릴레이션 인스턴스의 모음

IMG_0CECBDC45B59-1

릴레이션은 속성 값으로 원자 값만 사용할 수 있음 !

🔑 : 릴레이션에서 튜플들을 유일하게 구별하는 속성 또는 속성들의 집합

키의 특성

  • 유일성 : 하나의 릴레이션에 모든 튜플들은 서로 다른 키 값을 가져야 함
  • 최소성 : 꼭 필요한 최소한의 속성들로만 키를 구성

키의 종류

  • 슈퍼키 : 유일성을 만족하는 속성 또는 속성들의 집합 ex. (id) (이름, 주소)
  • 후보키 : 유일성과 최소성을 만족하는 속성 또는 속성들의 집합 ex. (id) (이름, 주소)
  • 기본키 : 후보키 중에서 최종적으로 선택한 키. 보통은 단순하고 변동이 적은 후보키를 선택.
  • 대체키 : 기본키로 선택되지 못한 후보키
  • 외래키 : 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합 ex. 주문 릴레이션의 주문고객 속성이 고객 릴레이션의 고객아이디 속성 참조

개체 무결성 제약 조건 : 기본키를 구성하는 모든 속성은 널 값을 가질 수 없는 규칙

참조 무결성 제약 조건 : 외래키는 참조할 수 없는 값을 가질 수 없는 규칙

07

E-R 다이어그램을 릴레이션 스키마로 변환하는 규칙

  1. 모든 개체는 릴레이션으로 변환한다

IMG_4957AE508CD0-1

  1. 다대다 관계는 릴레이션으로 변환한다

    IMG_82A402C9C8A0-1

  2. 일대다 관계는 외래키로 표현한다.

  • 일반적인 일대다 관계는 외래키로 표현

IMG_E8ABD58BC34D-1

  • 약한 개체가 참여하는 일대다 관계는 외래키를 포함해서 기본키를 지정

IMG_DD39B940A942-1

  1. 일대일 관계는 외래키로 표현한다
    • 일반적인 일대일 관계는 외래키를 서로 주고 받는다
    • 필수적으로 참여하는 개체 릴레이션만 외래키를 받는다
    • 모든 개체가 필수적으로 참여하면 릴레이션을 하나로 합친다
  2. 다중 값 속성은 릴레이션으로 변환한다
  3. 모든 관계는 릴레이션으로 변환할 수 있다 (속성이 많은 관계는 유형에 상관없이 릴레이션으로의 변환을 고려할 수 있음)

08

이상 현상 : 불필요한 데이터 중복으로 인해 릴레이션에 대해 데이터의 삽입,수정,삭제 연산을 수행할 때 발생할 수 있는 부작용

정규화 : 이상 현상을 제거하면서 데이터베이스를 올바르게 설계해 나가는 과정

이상 현상의 종류

  • 삽입 이상 : 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야하는 문제
  • 갱신 이상 : 중복 튜플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제
  • 삭제 이상 : 튜플을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제

=> 함수의 종속성을 판단하여 정규화를 수행함

함수의 종속성 : 속성들 간의 관련성

함수 종속 : “X가 Y를 함수적으로 결정한다” 고객 id ➡️ 고객 이름

완전 함수 종속 : 릴레이션에서 속성 집합 Y 가 속성 집합 X 에 함수적으로 종속되어 있지만, 속성 집합 X 의 전체가 아닌 일부분에는 종속되지 않음을 의미함 ex. 당첨 여부 ➡️ {고객 id, 이벤트 번호}

부분 함수 종속 : 릴레이션에서 속성 집합 Y 가 속성 집합 X의 전체가 아닌 일부분에도 함수적으로 종속됨을 의미.

이행적 함수 종속 : 릴레이션을 구성하는 세 개의 속성 집합 X,Y,Z 에 대해 함수 종속 관계. X->Y, Y->Z 가 존재하면 논리적으로 X->Z 가 성립하는데, 이것을 Z 가 X 에 이행적으로 함수 종속되었다고 함.

09

정규형 : 릴레이션이 정규화된 정도

제1 정규형 : 릴레이션의 모든 속성이 더는 분해되지 않는 원자 값만 가지면 제 1정규형을 만족함. 제 1정규형을 만족해야 관계 데이터베이스의 릴레이션이 될 자격이 있음

제2 정규형 : 릴레이션이 제 1 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속되면 제 2 정규형을 만족함

제3 정규형 : 릴레이션이 제 2 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속되지 않으면 제 3 정규형을 만족함

10

관계 데이터 연산 : 원하는 데이터를 얻기 위해 릴레이션에 필요한 처리 요구를 수행하는 것.

대표 연산자 8개

  • 합집합
  • 교집합
  • 차집합
  • 카디션 프로덕트
  • 셀렉트 : 릴레이션 R 에서 조건을 만족하는 튜플들을 반환
  • 프로젝트 : 릴레이션 R 에서 주어진 속성들의 값으로만 구성된 튜플들을 반환
  • 조인 : 공통 속성을 이용해 릴레이션 R 과 S 의 튜플들을 연결하여 만들어진 새로운 튜플들을 반환
  • 디비전 : 릴레이션 S 의 모든 튜플과 관련이 있는 릴레이션 R 의 튜플들을 반환

IMG_1A9FCB1C9B06-1