4.2 ERD와 정규화 과정
스터디를 함께 진행했음
ERD
릴레이션 간의 관계들을 정의한 것
- 요구사항을 기반으로 작성해서 데이터베이스를 구축할 때 가장 기초적인 뼈대 역할
- 디버깅, 재설계시 설계도 역할
- 관계형 구조의 데이터를 구성하는데는 유용하지만, 비정형 데이터를 표현하기 어렵다는 단점이 있다.
비정형 데이터 : 미리 정의된 데이터 모델이 없거나, 미리 정의된 방식으로 정리되지 않은 정보

정규화
정규화 : 릴레이션 간의 잘못된 종속 관계로 인해서 일어난 데이터베이스 이상 현상을 해결하거나, 저장 공간을 효율적으로 사용하기 위해서 릴레이션을 분리하는 과정
제1정규형
릴레이션의 모든 도메인이 더 이상 분해될 수 없는 원자 값 만으로 구성되어야 한다.
여러 값들을 쪼개서 개별 원자값으로 만들어주는 것이 바로 제1정규화

제2정규형
모든 컬럼은 PK 전체에 종속되어야 한다.
부분 함수 종속성을 제거하는 것이 바로 제2정규화

제3정규형
기본키가 아닌 모든 속성이 이행적 함수 종속을 만족하지 않는 상태를 말한다.
PK가 아닌 컬럼이 다른 컬럼을 결정하면 안 된다.
이행적 함수 종속 : A → B와 B→ C가 존재하면 A → C가 존재하는데 이 때 C가 A에 이행적 함수 종속이라고 한다. PK가 아닌 컬럼이 논리적 연관에 의해서 다른 컬럼을 결정하게 되는 것
아래 예시에서의 이행 종속은 학생 이름 → 기숙사 → 기숙사 유령 이 된다. 그래서 중간 컬럼인 기숙사를 기준으로 분리한 것.

BCNF
결정자는 반드시 후보 키여야 한다.
후보 키가 아닌 결정자 제거

제4정규형
하나의 테이블에 다치 종속이 없는 상태
다치 종속 : 한 테이블에 서로 독립적인 두 개의 다중값 속성이 함께 존재하는 것
서로 독립적인 다중값 속성을 별도 테이블로 분리한다

제5정규형
테이블이 조인 종속 없이 더 이상 무손실 분해되지 않는 상태
조인 종속 : 세 개 이상의 관계가 얽혀있어서 분리했다가 조인했을 때 원래 테이블이 완벽하게 복원되는 것
얽혀있는 세 개 이상의 관계를 각각 별도 테이블로 분리한다.
