-
9일차 - 정규형과 정규화 예제CS지식/데이터베이스 2021. 5. 3. 23:00
오늘은 정규형에 대해 배우고 저번 시간에 배운 정규화를 직접 예제를 통해 해보는 시간을 가졌다.
정규형에서는 3정규형까지만 배워서 BCNF형, 제 4형, 5형에 대해 따로 알아봐야 할 필요성을 느꼈다.
1. 정규화란 (복습)
정규화는 함수 종속성을 이용해 릴레이션을 연관성 있는 속성들로만 구성되도록 분해해서 이상 현상이 발생하지 않는 바람직한 릴레이션으로 만들어 가는 과정이다.
여기서 릴레이션을 분해할 때 무손실 분해되어야 한다.
무손실 분해가 의미하는 것은
릴레이션이 의미적으로 동등한 릴레이션들로 분해되어야하고 분해로 인한 정보의 손실이 발생하지 않아야한다는 것이다.
또한, 분해된 릴레이션들을 자연 조인하면 분해 전의 릴레이션으로 복원 가능해야한다.
2. 정규형(NF, Noraml Form)
오늘 배운 것 중 가장 중요한 요점인 정규형이다.
정규형은 릴레이션이 정규화된 정도를 나타낸 것으로 각 정규형마다 제약조건이 존재한다.
정규형의 차수(1형<2형<3형<...<5형)가 높아질수록 요구되는 제약조건이 많아지고 엄격해진다.
또한, 데이터 중복이 줄어 이상 현상이 발생하지 않는 바람직한 릴레이션이 된다.
1) 제 1정규형
제 1정규형은 릴레이션에 속한 모든 속성의 도메인이 원자 값으로만 구성되어 있으면 제 1정규형에 속한다.
사실 상, 릴레이션을 배울 때 원자성에 대해 배우면서 릴레이션의 조건으로 알고 있다.
그러므로 제 1 정규형을 만족해야 관계 데이터베이스의 릴레이션이 될 자격이 있다.
제 1 정규형 릴레이션에서 이상현상이 발생한다면 원인을 파악해 더 높은 차수의 정규형으로 정규화 해야한다.
2) 제 2정규형
제 2정규형은 릴레이션이 제 1정규형에 속하고 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속되면 제 2정규형에 속한다.
완전함수종속에 대해서는 저번 시간(8일차) 때 설명했으므로 자세한 설명은 생략하겠다.
3) 제 3정규형
제 3정규형은 릴레이션이 제 2정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 되지 않으면 제 3정규형에 속한다.
오늘은 제 3정규형까지 배우고 릴레이션을 제 3정규형까지 정규화하는 실습을 진행했다.
보통 제 3정규형이나 보이스/코드 정규형까지 많이 사용한다고 한다.
'CS지식 > 데이터베이스' 카테고리의 다른 글
11일차 - 데이터베이스 언어 SQL (0) 2021.05.09 10일차 - 관계 데이터 연산 (0) 2021.05.06 8일차 - 정규화 (0) 2021.04.30 7일차 - 관계 데이터 모델링: 실습 (0) 2021.04.27 6일차 - 관계 데이터 모델링 (0) 2021.04.23