CKtrace's Devlog
[DB] - 정규화 본문
Before Entering...
정규화 관련 내용으로 들어가기 앞서 미리 알아두고 들어가야 할 내용들이 담긴 제가 작성한 포스팅을 첨부해두도록 하겠습니다.
[DB] - 데이터베이스 설계 및 이상 현상
Database Design Process 데이터베이스 설계 과정 STEP 1 요구 사항 분석 DB의 용도 파악 → 요구 사항 명세서 STEP 2 개념적 설계 DBMS에 독립적인 개념적 구조 설계 → E-R 다이어그램 STEP 3 논리적 설계 DBMS..
cktrace.tistory.com
[DB] - 함수 종속
About Functional Dependency 릴레이션 하나를 구성하는 속성들의 부분 집합을 A와 B라 한다면, 시점에 상관없이 릴레이션 내의 모든 튜플에서 A 값에 대한 B 값이 항상 하나라면 "A가 B를 함수적으로 종속
cktrace.tistory.com
제가 첨부한 글들이 정규화에 관련된 설명들을 이해하는데 도움이 되었으면 좋겠습니다!
이제 정규화를 이해하는데 필요한 개념들에 대해 알아보았으니 정규화에 대해 알아보도록 하겠습니다~!
About Normalization
정규화(Normalization)는 함수 종속성을 이용해 기존의 릴레이션을 연관성이 있는 속성들로만 구성되도록 분해한 후, 이상 현상이 발생하지 않는 올바른 릴레이션으로 만들어가는 과정입니다.
정규화는 기존의 릴레이션을 올바른 릴레이션으로 만들어가는 과정이기에 정규화된 정도를 기준으로 종류를 나눌 수 있습니다.
이를, 정규형(NF : Normal Form)으로 표현합니다.
정규형의 종류는 위와 같이 분류됩니다.
그렇다면 각 정규형의 종류가 분류되는 기준에 대해 알아보도록 하겠습니다.
제 1 정규형 : 1NF (First Normal Form)
릴레이션에 속한 모든 속성의 도메인이 atomic value(원자 값)로만 이루어져 있으면 1NF에 속합니다.
제2 정규형 : 2NF (Second Normal Form)
기본키가 아닌 모든 속성이 기본키에 완전 함수 종속될 뿐만 아니라
릴레이션이 1NF에 속한 경우 2NF에 속합니다.
제3 정규형 : 3NF (Third Normal Form)
기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 되지 않으면서
릴레이션이 2NF에 속하는 경우 3NF라고 합니다.
(이때 이행적 함수 종속. transitive FD란 릴레이션을 구성하는 3개의 속성 집합 A, B, C가 존재할 때, 함수 종속 관계
A → B, B → C가 존재하면 논리적으로 A → C가 성립하며, 속성들의 집합인 C 가 또 다른 속성들의 집합인 A 에
이행적으로 함수 종속되었다고 하는 것입니다.)
보이스/코드 정규형 : BCNF (Boyce/Codd Normal Form)
릴레이션의 함수 종속 관계에서 모든 결정가 후보키인 경우 BCNF에 속합니다.
제4 정규형 : 4NF (Fourth Normal Form)
함수 종속이 아닌 다치 종속, Multi Valued Dependency : MVD를 제거해야 만족할 뿐만 아니라
릴레이션이 보이스/코드 정규형 또한 만족한 경우 4NF에 속합니다.
제5 정규형 : 5NF (Fifth Normal Form)
후보키를 통하지 않는 조인 종속, Join DEpendency : JD를 제거하면서
릴레이션이 4NF를 만족하는 경우 5NF에 속합니다.
사실 DB를 설계할 때는 제5 정규형을 만족할 때까지 분해하면 비효율적이고 바람직하지 않아 무조건적으로 제5 정규형에 속하도록 분해해야 하는 것은 아닙니다.
대게 제 3정규형 또는 보이스/코드 정규형에 속하도록만 릴레이션을 분해하여 올바른 릴레이션이 되도록 합니다.
이상으로 정규화에 대한 글을 마치도록 하겠습니다.
긴 글이었지만 읽어주셔서 감사하다는 말씀드리며, 다음에는 더 좋은 글로 찾아뵙도록 하겠습니다!
감사합니다.
'DB' 카테고리의 다른 글
[DB] - 트랜잭션 (0) | 2022.06.29 |
---|---|
[DB] - 함수 종속 (0) | 2022.06.28 |
[DB] - 데이터베이스 설계 및 이상 현상 (0) | 2022.06.27 |
[DB] - 삽입 SQL (ESQL) (0) | 2022.06.27 |
[DB] - 뷰 (0) | 2022.06.27 |