728x90
[Database] 정규화(Normalization) 쉽게 이해하기 - MangKyu's Diary (tistory.com)
정규화의 기본 목표: 테이블 간에 중복된 데이타를 허용하지 않는다는 것
무결성 유지할 수 있으며, DB의 저장용량 역시 줄일 수 있음.
이런 테이블을 분해하는 정규화 단계가 정의되어 있는데, 여기서 테이블을 어떻게 분해되는지에 따라 정규화 단계가 달라짐.
1. 제 1 정규화
테이블의 컬럼이 원자값을 갖도록 테이블을 분해하는 것
요러케
2.제2정규화
제 1 정규화를 진행한 테이블에 대해 완전 함수 종속을 만족하도록 테이블을 분해하는 것
이 테이블에서 기본키는 (학생번호, 강좌이름)으로 복합키임.
학생번호 -> 성적
강좌이름-> 강의실로 결정자임.
이렇게 분해하여 별도의 테이블로 관리해야 함
3.제 3 정규화
제 2 정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블을 분해하는 것.
(이행적 종속: A -> B , B -> C일 떄 A-> C가 성립되는 것)
이렇게 하여 이행적 종속을 제거해야 함.
제거해야 하는 이유: 501번의 학생이 스포츠경형학으로 변경하였을때 수강료도 함께 변경되어야 함으로
4.BCNF 정규화
제 3 정규화를 진행한 테이블에 대해 모든 결정자가 후보키가 되도록 테이블을 분해하는 것
교수가 특강이름을 결정하는 결정자이지만, 후보키가 아님.
따라서 테이블을 분해해야 함.
728x90
'CS > 데이터베이스(DB)' 카테고리의 다른 글
[DB] NoSQL (+Redis) (0) | 2023.12.17 |
---|---|
[DB] clustered / non clustered index (0) | 2023.12.17 |
[DB] Union vs Union All (+JOIN) (0) | 2023.12.17 |
[DB] 키(key) (0) | 2023.12.17 |
트랜잭션 (0) | 2023.09.27 |