CS/데이터베이스(DB)

[DB] 정규화

혀니리리 2023. 12. 17. 18:56
728x90

[Database] 정규화(Normalization) 쉽게 이해하기 - MangKyu's Diary (tistory.com)

 

[Database] 정규화(Normalization) 쉽게 이해하기

지난 포스팅에서 데이터베이스 정규화와 관련된 내용을 정리했었다. 하지만 해당 내용이 쉽게 이해되지 않는 것 같아서 정규화 관련 글을 풀어서 다시 한번 정리해보고자 한다. 1. 정규화(Normaliz

mangkyu.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