오늘 뭐했냐/개발에 대한 주저리

23.07.29 RDBMS의 정규화

스스로에게 2023. 8. 1. 00:30

 정규화의 기본 목표는 테이블 간에 중복된 데이타를 허용하지 않는다는 것이다. 중복된 데이터를 허용하지 않음으로써 무결성(Integrity)를 유지할 수 있으며, DB의 저장 용량 역시 줄일 수 있다. 즉, 쉽게 풀이하면 테이블을 분리하여 저장하는 것이다.

 

이런 테이블을 분리하는 정규화에도 단계가 있다. 

  • 제1정규화 : 모든 속성 값이 원자 값을 갖도록 분해한다.

 

  • 제2정규화 : 제1정규형을 만족하고, 기본키가 아닌 속성이 기본키에 완전 함수 종속이도록 분해한다.
    (완전 함수 종속이란 기본키의 부분집합이 다른 값을 결정하지 않는 것을 의미한다.)

 

  • 재3정규화 : 제2정규형을 만족하고, 기본키가 아닌 속성이 기본키에 직접 종속(비이행적 종속)하도록 분해한다.
    (이행적 종속이란 A->B->C가 성립하는 것으로, 이를 A,B와 B,C로 분해하는 것이 제3정규형이다.)

 

  • BCNF 정규화 : 제3정규형을 만족하고, 함수 종속성 X->Y가 성립할 때 모든 결정자 X가 후보키가 되도록 분해한다.

 

결론 : 데이터 베이스에서 가장 중요한 부분이라고 할 수 있는 용량 관리와 무결성 유지를 위해서 테이블을 잘게 나누는 것이 정규화이다.

 

 

참고 이거 보고  이거 보면 그나마 더 나을 수도?