본문 바로가기

IT/DB

【설계】정규화 정리

제 1 정규화(1NF)

- 반복되는 그룹 속성이 존재할 경우 그룹을 분리하여 새로운 실체를 추가한 후 기존의 실체와 1:N의 관계를 형성함으로써 속성들의 원래 제자리를 찾아주는 것이다.

고객 ID 수강강좌
aaa001 수영; 요가

고객 ID 수강강좌
aaa001 수영
aaa001 요가
▶ 테이블 내의 속성 값은 원자값을 가지고 있어야한다.
▶ 수강강좌가 속성에 2개 이상의 값을 가지고 있는 경우 원자값이 아니기 때문에 속성 1개만 가지도록 저장하면 1차 정규화를 만족

 

제 2 정규화(2NF)

- 복합키(Composit Primary Key)로 구성된 경우가 2차 정규화의 대상이 되며 복합키 전체에 의존하지 않고 복합키의 일부분에만 종속되는 속성들이 존재할 경우(즉, 부분적 함수 종속 관계가 존재할 경우)이를 제거시키는 것이다.

고객 ID 서비스이름 서비스가격 서비스 이용시간
aaa001 헬스 70000 1달
aaa001 수영 100000 2달
aaa002 수영 100000 2달

고객 ID 서비스이름 서비스 이용시간
aaa001 헬스 1달
aaa001 수영 2달
aaa002 수영 2달
서비스이름 서비스가격
헬스 70000
수영 100000
▶ <고객ID, 서비스 이름>이 <서비스 이용 기간>에 영향을 주고, <서비스 이름>이 <서비스 가격>에 영향을 주는 관계를 부분 함수 종속 관계라고 한다.
▶ <고객ID, 서비스 이름, 서비스 가격, 서비스 이용 기간>을 한 테이블에 두는 것은 부분 함수 종속성으로 인해 2차 정규화를 만족하지 못한다.
▶ 부분 관계인<서비스 이름, 서비스 가격> 관계를 별도의 테이블로 두면 부분 함수 종속 관계가 제거 되어 2차 정규화를 만족한다.

제 3 정규화(3NF)

- 키가 아닌 컬럼에 종속적인 속성이 존재할경우(즉 이행적 종속 관계가 존재할 경우) 이를 제거시키는 것이다.

책번호 도서 이름 도서 가격 출판사 홈페이지
1 C언어 30000 A사 www.a.com
2 C++언어 25000 B사 www.b.com
3 JAVA언어 40000 B사 www.b.com

책번호 도서 이름 도서 가격 출판사
1 C언어 30000 A사
2 C++언어 25000 B사
3 JAVA언어 40000 B사
출판사 홈페이지
A사 www.a.com
B사 www.b.com
▶ <책번호>가 <출판사>에 영향을 주고, <출판사>가 <홈페이지>에 영항을 주는 관계인 A->B이고, B->C이면서
A->C관계가 같이 있는 경우를 이행 함수 종속관계라고 한다.
▶ <책번호, 출판사, 홈페이지>를 한 테이블에 두는 것은 이행함수 종속성으로 인해 3차 정규화를 만족하지 않는다.
▶ <책번호>는 <홈페이지>에 직접 영향을 주는 관계가 아니기 때문에 (A->C관계), <책번호, 출판사>테이블, <출판사, 홈페이지>테이블로 분리하여 이행함수 관계를 제거야하여 3차 정규화를 만족한다.

 

 

 

제 4 정규화(4NF)

- 다중화 값의 종속성 제거, 특정 속성 값에 따라 선택지인 속성을 분리한다.

개발자 자격증 언어
홍길도 정보처리기사 C
홍길동 빅데이터 분석 기사 C++
장길산 정보처리기사 JAVA

개발자 자격증
홍길동 정보처리기사
홍길동 빅데이터 분석 기사
장길산 정보처리기사
개발자 언어
홍길동 C
홍길동 C++
장길산 JAVA

 

제 5정규화(5NF)

- 조인 종속성을 제거한다.

 

 

ER 모델

실세계에 존재하는 것 가운데, 데이타베이스로서 표현해야 할 대상물을 엔티티 (entity: 엔티티)라고 부릅니다. 또한 엔터티와 엔터티 간의 상호 관계를 관계(relationship: 관련)라고 합니다. 그리고 이 관계를 도시하고 엔티티와 엔티티 간의 관계를 분석하는 기법을 ER(Entity-Relationship) 모델이라고 합니다.

 

엔티티와 엔티티 간의 관계에는 다음과 같은 대응 관계가 있습니다.

 

1:1엔티티

 A에 대해서는, 엔티티 B는 하나 밖에 존재하지 않고, 엔티티 B에 대해서도 엔티티 A는 하나 밖에 존재하지 않는 관계의 경우, 1:1의 대응이라고 합니다. 예를 들어, 엔티티 "학생"과 엔티티 "학생 번호"의 관계는 1:1입니다.

 

1:N엔티티

 A 에 대해 엔티티 B 가 복수 존재하고 엔티티 B 에 대해서는 엔티티 A 가 하나 밖에 존재하지 않는 관계의 경우, 1:N 의 대응이라고 합니다. 예를 들어, 엔티티 "아버지"와 엔티티 "아이"의 관계는 1:N입니다.

 

M:N엔티티

A에 대해 엔티티 B가 복수 존재하고, 엔티티 B에 대해서도 엔티티 A가 복수 존재하는 관계의 경우, M:N 의 대응이라고 합니다. 예를 들어, 엔티티 "강의"와 엔티티 "수강생"의 관계는 M:N입니다.

 

 

 

반응형

'IT > DB' 카테고리의 다른 글

MariaDB UTF8 관련 Error 설정  (0) 2024.08.02
2021-10-15 SQL  (0) 2021.10.15