데이터베이스 정규화
Database ·정규형이란?
- 어떤 일련의 제약 조건을 만족하는 릴레이션
제 1정규형(1NF)
- 모든 도메인이 원자값만으로 된 릴레이션
제 2정규형(2NF)
- 1NF
- 키에 속하지 않는 모든 애트리뷰트들이 기본 키에 완전 함수 종속
제 3정규형(2NF)
- 2NF
- 후보 키에 속하지 않는 모든 애트리뷰트들이 후보 키에
이행적 함수 종속되지 않음
보이스/코드 정규형(BCNF)
- 3NF
- 릴레이션 R의 모든 결정자가 후보 키이면 릴레이션 R은 BCNF에 속함
제 4정규형(4NF)
- BCNF
- 릴레이션에서 다치 종속되지 않음
제 5정규형(5NF)
- 4NF
- 릴레이션에 존재하는 조인 종속이 후보 키를 통해서만 성립이 되도록 하는 정규형
기본키란?
-
후보키 중에서 선택한 주요키
-
한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성
-
NULL값을 가질 수 없음
-
기본키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없음
-
기본 키는 2개 이상의 속성으로 이루어질 수도 있음
후보키란?
- 기본키로 사용할 수 있는 속성들
- 모든 릴레이션에는 반드시 하나 이상의 후보키가 존재
- 릴레이션에 있는 모든 튜플에 대해서 유일성과 최소성을 만족
- 유일성 -> 하나의 키값으로 하나의 튜플만을 유일하게 식별할 수 있어야 함
- 최소성 -> 모든 레코드들을 유일하게 식별하는데 꼭 필요한 속성으로만 구성되어야 함
함수 종속이란?
- 애트리뷰트 X값 각각에 대해 애트리뷰트 Y값이 하나만 연관된 것
- X는 Y의 결정자, Y는 X의 종속자라고 함
- X, Y는 복합 애트리뷰트일 수 있음
- ex) (학번, 과목) -> 성적
완전 함수 종속이란?
- 종속자가 기본키에만 종속됨
- 부분 함수 종속이 아님
부분 함수 종속이란?
- 종속자가 기본키가 아닌 다른 속성에 종속되거나
- 기본키가 여러 속성으로 구성된 경우 기본키 속성 중 일부만 종속된 경우
이행적 함수 종속이란?
- X -> Y, Y -> Z의 종속 관계가 있을 경우, X->Z가 성립되는 경우
다치 종속이란?
- A의 속성값은 B의 속성값의 집합을 결정하게됨
- 두 개의 독립된 애트리뷰트가 1:N 관계로 대응하는 관계
- ex) 회원번호, 주문 도서
조인 종속이란?
- 릴레이션을 분해한 뒤 자연 조인한 결과가 원래의 릴레이션과 같은 결과가 나오는 종속성
4 ~ 5정규형은 테이블 수가 너무 많아져 많은 조인으로 인해 성능에 문제가 생길 수 있다. 실무에서는 3정규형 혹은 보이스코드정규형이 주로 사용된다.