SQL-D 기출 초토화: 정규화에 대해 간단히 알아보기

0
post-thumbnail

정확한 설명은 링크를 통해


1차 정규화

모든 속성은 반드시 하나의 값만 가져야 한다

소속사(PK)직원번호이름SNS
EDAM1004이지은Instagram, FaceBook, Cyworld

위 테이블에서 SNS 속성은 여러 개의 값을 가지고 있다.
모든 속성은 반드시 하나의 값만 가져야 한다는 제1 정규형에 위배된다.
각 속성이 하나의 값만 가지도록 아래와 같이 수정해보겠다.

소속사(PK)직원번호이름SNS1SNS2SNS3
EDAM1004이지은InstagramFaceBookCyworld

위 테이블은 같은 성격 또는 내용의 속성을 복수로 가지고 있다.
즉, 반복된 그룹을 가지고 있으며 제1 정규형에 위배된다.

따라서 결과적으로 위 테이블은 분리되어야 한다.


직원
소속사(PK)직원번호이름
EDAM1004이지은
KOZ1006ZICO

SNS
직원번호SNS
1004Instagram
1004FaceBook
1004Cyworld
1006Instagram
1006FaceBook

직원번호는 여러 개의 SNS와 연결된다.
1:N 관계


2차 정규화

모든 속성은 반드시 기본키에 종속되어야 한다
(기본키 일부에만 종속되어서는 아니 된다)

주문번호(PK)음료코드(PK)주문수량음료명
11001321토레타
21004121토레타(락토)
3100777콕카 코오라

위 테이블에서 PK는 복합키로 구성되어 있다.
즉, 주문번호와 음료코드 두 컬럼이 그룹화되어 하나의 PK가 된 것이다.
테이블에는 단 하나의 PK가 존재해야 하는 것이 맞지만, 단 하나의 칼럼을 지정하여 PK로 설정해야 하는 것은 아님에 주의한다.

음료코드로 음료가 식별되며, 기본키인 주문번호는 음료명을 확정하지 않는다.

이러한 구성이라면, 주문이 발생하지 않는 한 새로운 음료를 입력할 수 없게 된다.

음료명을 변경하려면 해당되는 주문의 행 자체를 수정해야할 필요가 생기며,
음료 정보를 삭제하려면 주문까지 삭제된다.

따라서 다음과 같이 분리되어야 한다.


주문
주문번호(PK)음료코드주문수량
11001321
21004121
3100777

음료
음료코드(FK)음료명
1001토레타
1004토레타(락토)
1007콕카 코오라

음료는 여러 개의 주문과 연결된다.
1:N 관계


3차 정규화

기본키가 아닌 모든 속성 간에 종속관계가 존재해서는 아니 된다

직원번호(PK)직원명소속사 번호소속사명
10042아이유11EDAM
12022ZICO15KOZ
10041한지민20BH엔터

위 테이블에서 소속사명은 PK인 직원번호가 아닌 소속사 번호에 종속된다고 보는 것이 타당할 것이다.
기본키가 아닌 다른 속성 사이에 종속관계가 있으므로 정규화 해야 한다.


직원
직원번호(PK)직원명소속사번호
10042아이유11
12022ZICO15
10041한지민20

소속사
소속사번호소속사명
11EDAM
15KOZ
20BH엔터

소속사는 여러 개의 직원과 연결된다.
1:N 관계


0개의 댓글