[SQLD] 데이터베이스 정규화란?
너무너무 어려운 데이터베이스 정규화 쉽게 정리
dustjq1005
·
2024년 11월 22일
정규화
정규화는 논리적 데이터모델링에 속합니다. 데이터베이스는 정규화 과정을 통해서 데이터들의 이상현상을 방지하기 위해 분류 작업을 하게 됩니다. 정규화를 통해서 얻게 되는 것은 다음과 같습니다.
- 데이터의 중복을 제거한다.
- 삽입,삭제,갱신 이상 현상을 제거한다.
- 데이터 무결성을 보장하여 정확성과 일관성을 유지한다.
- 데이터의 입력/수정/삭제 성능이 향상된다.
- 데이터의 조회 성능이 하락할 수 있다.
정규화 과정
정규화는 총 5과지 과정이 있습니다. 차례대로 1차~5차 정규화라고 하기도 하고, 1NF, BCNF와 같은 이름이 붙습니다. 정규화 과정마다 방식이 각자 다르고 이해하기 어렵기 때문에 주의 깊게 봐야하고, 문제 출제 빈도가 높다고 볼 수 있습니다.
1NF -> 2NF -> 3NF -> BCNF -> 4NF 1차 정규화 -> 2차 정규화 -> 3차 정규화 -> 4차 정규화 -> 5차 정규화
제1정규화
- 모든 속성은 반드시 하나의 값을 가져야한다.
즉, 중복되는 속성을 제거를 하면 됩니다. 하나의 속성에 여러 개의 값, 또는 같은 속성이 여러개를 가지고 있으면 1차 정규화 대상이 됩니다.
제2정규화
- 모든 속성은 기본키에 종속되어야 한다.
2차 정규화는 기본키에 종속되지 않은 속성이 있으면 2차 정규화 대상입니다. 일부만 종속되면 안된다는 뜻이며, 함수 종속성에 따라서 테이블이 나뉘어지게 됩니다.
제3정규화
- 기본키가 아닌 다른 속성들끼리 종속되어선 안된다.
일반 속성에 의존하는 다른 속성이 있다면 이를 분리해서 관리해야 합니다.
사원 테이블에 사원번호, 이름, 부서코드, 부서명이 있는데 부서명은 부서코드에 종속적이게 됩니다.
-> 데이터에 중복이 발생할 수 있습니다.