📍 논리적 모델링
정규화(DB normalization)
관계형 데이터베이스에서 데이터를 구조화하는 작업
- 데이터의 중복을 방지하고 보다 효율적으로 데이터를 저장하기 위해
- 삽입, 삭제, 갱신 이상의 발생 가능성을 줄이기 위해
비정규화 테이블
ㅣ 반복 속성 제거, 모든 속성이 **원자값**을 가짐
제1정규형
ㅣ **부분 함수적 종속 제거**, 키가 아닌 모든 속성이 기본키 그룹에 완전하게 함수적 종속
제2정규형
ㅣ **이행적 함수적 종속 제거**, 키가 아닌 모든 속성이 기본키에 직접 종속(비이행적)
제3정규형
ㅣ 후보키가 아닌 결정자 제거, 모든 결정자가 후보키
BDNF
ㅣ 다치종속 제거
제4정규형
ㅣ 조인 종속성 이용
제5정규형
☑️ 제1정규화
엔티티에서 하나의 속성이 복수의 값을 갖도록 설계되었을 때 하나의 속성이 단일 값을 갖도록 하는 것 (모든 속성은 원자값(단일값)을 가짐)
- 엔티티에 인스턴스를 삽입했을 때, 중복, NULL을 갖는 속성들을 별도의 엔티티로 추출
- 기존 엔티티의 주식별자가 모두 추출된 경우 새로운 주식별자를 지정
-> 남아있는 기본속성 중 주식별자가 될 수 있는 속성이 있는지 판단, 없는 경우 인위적 주식별자를 추가
- 추출된 엔티티를 부모, 기존 엔티티를 자식 엔티티로 지정
- 참여도 파악
- 식별/비식별 관계 파악
☑️ 제2정규화
주식별자가 아닌 속성 중에서 주식별자 전체가 아닌 일부 속성에 종속된 속성을 찾아 제거하는 것 (부분 함수적 종속 제거)
-> 모든 속성은 반드시 모든 기본키에 종속되어야 한다.
- 복합키를 가진 엔티티의 기본 속성 중 주식별자 전체에 종속되지 않는 기본속성과 부분 종속시키는 주식별자를 별도의 엔티티로 추출
- 추출된 엔티티를 부모, 기존 엔티티를 자식 엔티티로 지정
- 참여도 파악
- 식별 관계로 지정
☑️제3정규화
주 식별자가 아닌 속성들 중에서 종속 관계에 있는 속성을 찾아 제거하는 것 (이행적 함수적 종속제거)
-> 이행 종속 : 기본키(주식별자)가 아닌 모든 속성 간에는 서로 종속될 수 없다
- 기본 속성 중 주식별자가 아닌 기본 속성에 종속되는 속성들을 별도의 엔티티로 추출
-> 종속하고 있는 기본 속성을 별도 엔티티의 주식별자로 지정,
- 추출된 엔티티를 부모, 기존 엔티티를 자식 엔티티로 지정
- 참여도 파악
- 비식별 관계로 지정