티스토리 뷰

공부/MYSQL

[MySQL] 정규형

cldy 2018. 8. 17. 12:46

* 본 게시물은 HeadFirst 교재를 공부 목적으로 정리한 글 입니다.

정규형

제 1 정규형(1NF)

규칙 1: 열은 원자적 값만을 포함한다. ex) colors (white,yellow,blue..) > X

> 원자적이려면 colors열이 하나만을 포함해야함.

규칙 2: 같은 데이터가 여러 열에 반복되지 말아야 한다. ex) color1, color2, color3.. > X

> 열들이 같은 종류의 데이터를 가지고 있음.


합성키

> 두 개 이상의 열로 이루어진 키를 ‘합성키’라고 함.

한 테이블 내의 열들이 서로 어떻게 연결되는지’를 이해하는 것이 제 2 정규형과 제 3 정규형을 이해하는 핵심.

합성키여러 개의 열들로 구성되어 유일무이한 키를 만드는 기본키.


열의 데이터가 변경될 때 다른 열의 데이터가 변경되어야 하면, 변경되어야 하는 열은 변경되는 열에 함수적 으로 종속하고 있음. ex)이니셜 열 - 이름 열

* 표기법

T.x ->; T.y    : T테이블에서 y열은 x열에 함수적으로 종속된다. 오른쪽이 왼쪽에 종속.

ex) super_heroes.name ->; super_heroes.initials


부분적함수 종속

> 키가 아닌 ‘열’이 합성키의 전부가 아닌 일부에 종속되는 경우.

ex) 합성키로 name+power

name이 변하면 initials의 값이 변하지만 power가 변하면 initials는 변하지 않기 때문에 initials 열이 name 열에 부분적으로 함수 종속 됨.


이행적 함수 종속

키가 아닌 ‘열’이 다른 열들과 어떻게 관련이 있는가?

만일 키가 아닌 열이 변경되었을때 다른 열의 변경을 야기시킨다면, 여러분은 이행적 종속 열을 보유하고 있는 것. (이행적 종속 관계)

> 키가 아닌 열이 키가 아닌 다른 열과 관련되는 경우.


테이블에 기본키 열을 추가하면 2NF를 만드는 데 도움 됩니다.

> 쉽게 유일무이함을 보장하려고 우리의 모든 테이블에 기본키 역할을 하는 열을 추가하였다. 덕분에 2NF로 바꾸는 것이 쉬움. 왜냐면 제2정규형은 테이블의 기본키와 데이터가 어떠한 관계에 있는지에 초점을 맞추기 때문.


제 2 정규형 (2NF)

규칙 1: 1NF여야 한다.

규칙 2: 부분적 함수 의존이 없다.


여러분의 1NF 테이블이 역시 2NF일 때는 다음과 같은 경우다.

테이블안에 모든 열이 기본키의 일부이거나 또는 하나의 열로 된 기본키를 가질 때.


제 3 정규형 (3NF)

규칙 1 : 2NF 입니다.

규칙 2 : 이행적 종속이 없습니다.

인위적으로 만든 기본키가 있고 합성키가 없는 테이블은 항상 2NF.

하지만 우리의 테이블은 3NF여야 함.

이행적 함수 종속은 키가 아닌 열이 키가 아닌 다른 열 과 관련되어 있다는 것.

키가 아닌 열 들 중 하나가 변할 때 다른 열도 변경되어야 하면 이행적 종속 관계.



댓글