정규화(Normalization)
- 데이터를 중복으로 젖아하면 일관되지 않은 데이터, 비정상적인 삽입 갱신 삭제 처리, 디스크 공간 낭비 등 많은 문제를 일으킨다.
- 중복 데이터를 저장하면서 일으키는 문제점을 없애기 위해서 정보를 주제별로 분할하는 프로그램
- 테이블 간에 중복된 데이터를 허용하지 않는다.
- 무결성을 유지 할 수 있다.
- 데이터를 보호하고, 항상 정상인 데이터를 유지하는 것
- DB 저장 용량을 줄일 수 있다.
- 무결성을 유지 할 수 있다.
정규화 단계
- 1NF (제 1 정규화)
- 테이블의 컬럼이 원자값(하나의 값)을 갖도록 테이블을 분해하는 것
- 한 컬럼에는 하나의 값만 들어갈 수 있게 하는 것
- 2NF(제 2정규화)
- 제 1정규화를 진행한 테이블에 대해 완전 함수 종속을 만족하도록 테이블을 분해하는 것
- 완전 함수 종속
- 기본키의 부분집합이 결정자가 되어선 안된다.
- 기본키가 복합키 일때, 기본키의 부분 집합에 의해서 결정될 수 있기 때문에 기존의 테이블에서 복합키를 분해하여 별도의 테이블로 관리하는 방법으로 제 2정규형을 만족시킨다.
- 3NF(제 3정규화)
- 제 2정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블을 분해하는 것
- 이행적 종속
- A -> B, B -> C가 성립 할 때, A -> C가 성립되는 것
- 이행적 종속을 제거하는 이유
- B의 데이터를 변경하면 C의 데이터도 그에 맞춰서 변경해야 하기 때문에 번거로움을 해결하기 위해서이다.
- A를 통해 B를 참조하는 테이블과 B를 통해 C를 참조하는 테이블로 분해해야한다.
- BCNF 정규화
- 제 3정규화를 진행한 테이블에 대해 모든 결정자가 후보키가 되도록 테이블을 분해하는 것
'개발 > Database' 카테고리의 다른 글
조인 : JOIN (INNER, OUTER, CROSS, SELF) (0) | 2024.02.05 |
---|---|
외래 키 설정하기, 1NF (테이블 쪼개기) (1) | 2024.02.04 |
키(Primary Key, Foreign Key)의 종류와 함수적 종속 (0) | 2024.02.04 |
데이터의 그룹별 선택 (GROUP BY) (0) | 2024.02.03 |
문자열을 다루는 내부함수 사용하기 (RIGHT, SUBSTRING_INDEX, UPPER) (0) | 2024.02.03 |