사전지식
관계형 데이터베이스에서의 DB구조 개념
- 릴레이션 / 테이블
: 행과 열로 이루어진 데이터의 집합
: 릴레이션 = 테이블 + 정규화
: 릴레이션의 조건 (제1 정규화 조건)
ㆍ행에 개체에 대한 데이터를 저장
ㆍ열에 개체에 특성에 대한 데이터를 저장
ㆍ한 열의 모든 값이 동일한 자료형
ㆍ열의 이름은 유일해야함
ㆍ각 셀은 단일한 값 또는 항목만 가짐 (다중항목)
- 행 (튜플 / 레코드)
: 한 객체에 대한 정보
- 열 (속성, 컬럼)
: 테이블의 속성
key와 관련된 기초 개념
- key
: 다른 튜플들과의 구별의 기준이 되는 속성
- 유일성
: 하나의 갑스올 하나의 튜플만을 유일하게 식별할 수 있어야함
- 최소성
: 모든 튜플들을 유일하게 식별하는데 꼭 필요한 속성만으로 구성되어야 함
데이터베이스 정규화
데이터베이스 정규화
- 관계형 데이터베이스의 설계에서 데이터의 중복을 최소화 하기위해 데이터를 구조화 하는 것
- 관계형 데이터베이스의 이상문제
: 삽입 이상
= 데이터를 추가할 때 원하지 않는 정보가 함께 삽입되는 경우
: 삭제 이상
= 튜플을 삭제함으로써 유지되어야 하는 정보까지도 연쇄적으로 삭제되는 경우
: 갱신 이상
= 중복된 튜플 중 일부의 속성만 갱신시킴으로써 정보의 모순성이 발생하는 경우
제 1 정규형
- 릴레이션의 모든 속성이 분해되지 않는 원자값임 (한 속성에 한 값만 있는 상태)
제 2정규형
- 제 1정규형을 만족하면서 부분 함수 종속을 제거
: 릴레이션을 분해하여 연관되어있는 속성끼리 릴레이션을 형성
ex) 학번이 성적, 학부, 등록금에 영향을 끼치고
과목코드가 성적에 영향을 끼칠 경우
제 3정규형
- 제 2정규형을 만족하면서 이행 함수 종속을 제거
※ 이행적 함수종속
= 속성 X,Y,Z가 있을때 종속관계가 X->Y->Z, X->Z인 형태
보이스코드 정규형 (BCNF / 강한 제 3정규형)
- 제 3정규형을 만족하면서 후보키가 하나만 존재하는 상태
: 후보키가 아님에도 불구하고 다른 속성을 결정하는 경우가 없는상태
제 4정규형
- 보이스코드 정규형을 만족하면서 다치종속을 제거한 상태
※ 다치종속 (MVD)
= 속성 A,B,C가 있을때 B에 대해서 (A, C) -> B 인데 B는 A에만 종속되어 있는 경우
=> R1 (A, B)와 R2(A, C)로 분해
제 5정규형
- 제 4정규형을 만족하면서 조인종속을 제거한 상태
※ 조인종속 (JD)
= 릴레이션의 조인이 자신의 속성에 대한 부분집합과 동일한 상태
= 학생 (학번, 이름, 학과, 학년)에서 학번과 이름이 후보키인 경우
JD*((학번, 이름, 학과), (학번, 학년))
JD*((학번, 이름), (학번, 학년), (이름, 학과))
※ 일반적으로 제 3정규형이나 BCNF에 속하도록 릴레이션을 분해하여 데이터중복을 줄임
Refference
'Database > Database' 카테고리의 다른 글
[백엔드 개발자 로드맵 2020] DATABASE - 리플리케이션 (Replication)과 클러스터링(Clustering) (0) | 2021.02.07 |
---|---|
[백엔드 개발자 로드맵 2020] DATABASE - 인덱스 구조 (Index Structures) (0) | 2021.02.07 |
[백엔드 개발자 로드맵 2020] DATABASE - N+1 쿼리 문제 (0) | 2021.02.07 |
[백엔드 개발자 로드맵 2020] DATABASE - 트랜잭션과 ACID (0) | 2021.02.07 |
[백엔드 개발자 로드맵 2020] DATABASE - ORM (Object Relational Mapping) (0) | 2021.02.07 |