관계형 데이터 모델링 - 정규화

Taeha Kim·2020년 9월 20일
0

Database

목록 보기
3/8
post-thumbnail

정규화

관계형 데이터 모델링에서 정규화(Normalization)는 속성(컬럼)간의 종속성을 없애는 것을 의미합니다.

정규화를 했을 경우 장점

데이터의 성격에 맞는 데이터 구조는 견고하고 확장성이 뛰어나며 데이터의 무결성이 높아집니다.

1 정규형(1NF)

속성은 반드시 하나의 값을 가져야 한다.

학번학생 이름전화 번호취미
123김태하010-1234-5678넷플릭스 감상, 독서
456김태영010-5678-1234컴퓨터 게임, 유튜브 인기 영상 시청

위의 표는 정규형을 위반한 릴레이션입니다.
취미라는 속성에는 하나의 값만 들어가야 하는데 ,(콤마)로 여러개의 값이 하나의 속성에 들어있는것을 볼 수있습니다.

이럴 경우 다음과 같이 제 1 정규형를 해줍니다.

#학번학생 이름전화 번호
123김태하010-1234-5678
456김태영010-5678-1234

#학번취미
123넷플릭스 감상
123독서
456컴퓨터 게임,
456유튜브 인기 영상 시청

2 정규형(2NF)

부분 종속성을 제거한다.

2정규형은 릴레이션의 모든 속성이 후보 식별자 전체에 종속적이면 2정규형이며,
후보 식별자 전체가 아닌 부분적으로 종속하면 2정규형을 만족하지 않는다.

#주문번호#상품번호상품명가격주문수량
123P0001데이터모델링100002
123A0001AWS 기본200001
456B0001파이썬 자료구조300001
456C0001플라스크250001
456A0001장고200002

위의 경우 일반속성인 상품명과 단가는 주 식별자 전체(주문번호, 상품번호)에 종속되지 않고 상품번호에만 종속되어 있습니다.

따라서 2정규형을 만족하지 않기 때문에 상품명과 단가를 기존의 엔티티에서 제외하고 상품번호를 주 식별자로 하는 새로운 엔티티를 만들어 줍니다.

#상품번호상품명가격
P1데이터모델링10000
A1AWS 기본20000
B1파이썬 자료구조30000
C1플라스크25000

#주문번호#상품번호주문수량
123P12
123A11
456B11
456C11
456A12

3 정규형(3NF)

이행 종속성을 제거한다.

일반 속성간에도 종속관계가 있을수 있는데 이런 관계를 이행 종속성이라 하며, 이행 종속성을 제거하면 3 정규형을 만족합니다.

간단히 말해서 기본키인 주 식별자말고는 다른 컬럼이 그외의 컬럼을 결정 할 수 없어야 합니다.

#주문번호#회원ID회원명주문일배송일
123user1김태하2020-09-202020-09-22
456user2김태영2020-10-022020-10-04
789user1김태하2020-09-272020-09-29

위의 예에서는 주문번호로 회원명을 알 수 있고, 회원ID로도 회원명을 알 수 있습니다.
따라서 3 정규형을 만족시키게 하려면 다음과 같이 엔티티를 나눠 줍니다.

#회원ID회원명
user1김태하
user2김태영

#주문번호#회원ID주문일배송일
123user12020-09-202020-09-22
456user22020-10-022020-10-04
789user12020-09-272020-09-29
profile
함께 성장하는 개발자가 되고 싶습니다.

0개의 댓글