1. 정규화란?
관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스
데이터 중복에 의한 이상현상을 해소하는 과정
2. 정규화 종류
① 1정규형(1NF): 모든 속성은 반드시 하나의 원자값만 가져야 한다.
반복그룹(취미1, 취미2, 취미3)을 가지거나 다중값(축구, 게임, 독서)를 가진다. 이는 1정규형을 위배하는 것이다.
테이블을 분리하여 1:N 관계를 만들어 준다.
② 2정규형(2NF): 부분적 함수종속 제거, 모든 속성은 반드시 모든 기본키에 종속되어야 한다. 기본키 일부에만 종속X
점수는 기본키(강의번호+학번)에 종속적이다. 하지만 이름은 학번만으로도 종속적이다. 이는 2정규형을 위반한다.
새로운 학생을 추가하는 경우 점수에 null값이 들어간다→입력이상
강의를 삭제할 경우(강의번호 삭제). 학생 데이터까지 삭제된다→삭제이상
아래와 같이 학생 테이블을 따로 만든다.
③ 3정규형(3NF): 이행적 함수종속 제거, 기본키가 아닌 모든 속성간에는 서로 종속될 수 없다.
학과는 학과번호에 종속된다. 기본키가 아닌 속성에 종속되는 것은 3정규형을 위반한다.
학과테이블을 별도로 만들어 학생 테이블에서 학과 테이블을 참조하도록 한다.
④ BCNF: 기본키가 아닌 속성이 기본키의 속성을 결정지을 수 없다.
'교수는 하나의 강의만 담당할 수 있다' 라는 사전조건이 들어가야 한다.
이 때에는 '교수' 속성이 '강의' 속성(기본키)을 결정지을 수 있다.
이럴 경우 아래와 같이 테이블을 분할한다.
'CS > 데이터베이스' 카테고리의 다른 글
JOIN (0) | 2021.09.30 |
---|---|
DB 역정규화 (0) | 2021.09.30 |
이상(Anomaly) (0) | 2021.09.29 |
SQL vs NoSQL (0) | 2021.09.29 |
트랜잭션의 격리수준 (0) | 2021.09.28 |