🚩 1. 데이터 베이스 정규화란?
- 데이터의 중복을 제거하고 무결성을 유지하면서 데이터 구조를 조직화하는 데이터 베이스 설계법이다.
- 각 단계는 정규화 규칙을 만족시키는 것을 목표로 한다.
- 정규화 과정은 여러 단계로 이루어지며 일반적으로 3단계에서 BCNF 정규형까지 설계된다.
📌 1-1. 제1 정규화

- 각 행과 열의 값을 원자적인 값으로 저장한다.
- 원자적 값: 더 이상 분리할 수 없는 단위의 값
- 각 행과 열의 값을 2개 이상 저장하지 않는다.
📌 1-2. 제2 정규화

- 이전 정규화 과정을 만족한다.
- 기본키를 제외한 속성들은 기본키에 완전 함수 종속이어야 한다.
- 완전 함수 종속: 기본키의 모든 요소가 함께 작동하여 다른 속성을 결정한다.
- 부분 함수 종속: 기본키의 일부 요소가 작동하여 다른 속성을 결정한다.
- 기본키의 부분 집합이 다른 속성의 결정자가 되면 안된다.

📌 1-3. 제3 정규화

- 이전 정규화 과정을 만족한다.
- 키를 제외하고 모든 속성 간에는 이행적 함수 종속성이 없어야 한다.
- 이행 함수 종속: A ➡️ B, B ➡️ C가 있을 때, A ➡️ C가 성립하는 것
- 키가 아닌 속성이 다른 속성을 간접적으로 결정하면 안된다.

📌 1-4. 보이스코드 정규화 - BCNF(Boyce-Codd Normal Form)

- 이전 정규화 과정을 만족한다. 제3 정규형을 강화시킨 형태로서 강화된 제3 정규화라고도 불린다.
- 모든 결정자가 후보키 집합에 속해야 한다.
- 후보키: 테이블의 각 행을 유일하게 식별할 수 있는 속성 혹은 속성의 집합
- 각 행을 식별하는데 사용할 수 있는 모든 키를 뜻하고 이 중 하나를 특별히 선택한 것이 기본키
- 기본키와 다르게 null값을 허용하고, 테이블당 갯수 제한이 없다.
- 후보키가 아니면서 결정자 역할을 하면 안된다.

🚩 2. 데이터 베이스 정규화의 장단점
📌 2-1. 장점
- 데이터 무결성: 데이터의 정확성과 일관성 보장할 수 있다.
- 데이터 중복 감소: 중복 데이터를 줄여 저장공간을 효율적으로 사용할 수 있다.
- 데이터 조작 효율성: 데이터 변경, 추가, 삭제 등이 간편해진다.
📌 2-2. 단점
- 복잡성 증가: 많은 수의 테이블과 테이블 간의 관계를 관리해야한다.
- 성능 저하: 여러 테이블을 조인하여 검색시 데이터 베이스의 성능이 저하될 수 있다.
❗데이터 베이스 비정규화(Database De-normalization)
- 의도적으로 데이터 베이스를 정규화하지 않는 설계법을 의미한다.
- 성능 향상 즉 데이터 접근 속도를 높이기 위해 사용한다.