정규화 (Normalization)
- data integrity 보장을 위해 중복을 최소화
- 중복을 최소화 : 1개의 table 을 2개 table로 분리
1) 1NF (1 Normal Form)
- repeating group 을 다른 테이블로 분리
2) 2NF (2 Normal Form)
- 전체 주식별자(PK)에 종속되지 않은 속성을 다른 테이블로 분리
3) 3NF (3 Normal Form)
- 일반 속성에 종속되지 않은 속성을 다른 테이블로 분리
예시)
1) 정규화 이전
<단점>
- 취득한 자격증이 4개 이상이 될 경우, table 컬럼 개수를 늘려야 함 (table 구조 변경)
- null 인 컬럼이 多 가능 (자격증을 1개만 취득한 경우 자격증명2, 자격증취득일자2, 자격증명3, 자격증취득일자3 은 null), 단, null 이기 때문에 table record 개수가 늘어나는 것은 아니다.
- 자격증명이 변경된 경우, 자격증명1, 자격증명2, 자격증명3 컬럼에 대해 모두 update 를 쳐야 하는데, 빠트릴 수 있고, 따라서 data integrity 문제가 발생 가능
2) 1NF 적용
<단점>
- '자격증코드'와 '자격증명'이 학생자격증에 중복해서 들어가있으므로, table record가 불필요하게 커짐
- 자격증명이 변경 -> update할 table record 개수가 多
- 자격증에 대한 table이 별도로 없다고 하자. 1개의 자격증을 1명의 학생이 가지고 있었는데, 해당 학생에 대한 record가 삭제되면 해당 1개 자격증 정보가 함께 삭제됨
3) 2NF 적용
<단점>
- '전공코드', '전공명', '전공사무실위치'가 학생에 중복해서 들어가있으므로, table record가 불필요하게 커짐
- 전공명이 변경 -> update할 table record 개수가 多
- 전공에 대한 table이 별도로 없다고 하자. 1개의 전공을 1명의 학생이 가지고 있었는데, 해당 학생에 대한 record가 삭제되면 해당 1개 전공 정보가 함께 삭제된다.
4) 3NF 적용
'Programming Theory > Data Modeling' 카테고리의 다른 글
Data Modeling pattern (0) | 2016.07.22 |
---|---|
논리 모델링 (0) | 2016.07.21 |
Data Modeling 절차 (0) | 2016.07.21 |