TIL Code_Camp 14일차 관계형 DB(정규화)
🌼 학습내용
⛔️ 정규화
정규형
정규화가 된 결과를 정규형 이라고 함
실무에서 주로 사용하는 제 3규형까지만 배운다.
주문번호 | 날짜 | 이름 | 나이 | 주문상품 |
---|
P001 | 10/23 | 철수 | 13 | A001레고 1개, A002 미니카 2개 |
P002 | 08/13 | 영희 | 15 | A003인형 1개, A001 레고 2개 |
P003 | 09/07 | 훈이 | 12 | A003인형 2개, A002 미니카 1개 |
한 줄에 여러 데이터가 있는 것을 다가 속성
문제점
: 주문 상품을 변경한다고 하면 P001에서 주문상품, 주문상품에서 레고, 수량을 찾아 수정해줘야함
1️⃣ 제 1정규화(1NF)
엑셀 하나의 칸에는 하나의 값만 들어가도록 분리
컬럼에 속성이 여러개(상품 번호, 상품명, 상품 수량) 들어있습니다. 이를 복합 속성
주문번호 | 날짜 | 이름 | 나이 | 상품번호 | 상품명 | 상품수량 |
---|
P001 | 10/23 | 철수 | 13 | A001 | 레고 | 1개 |
P001 | 10/23 | 철수 | 13 | A002 | 미니카 | 2개 |
P002 | 08/13 | 영희 | 15 | A003 | 인형 | 1개 |
P002 | 08/13 | 영희 | 15 | A001 | 레고 | 2개 |
P003 | 09/07 | 훈이 | 12 | A003 | 인형 | 2개 |
P003 | 09/07 | 훈이 | 12 | A002 | 미니카 | 1개 |
철수의 이름이 변경되었다고 하면, 2줄 모두 수정
테이블을 2개로 분리함으로써 이를 개선
[주문]
주문번호 | 날짜 | 이름 | 나이 |
---|
P001 | 10/23 | 철수 | 13 |
P002 | 08/13 | 영희 | 15 |
P003 | 09/07 | 훈이 | 12 |
[주문_상품]
주문번호 | 상품번호 | 상품명 | 상품수량 |
---|
P001 | A001 | 레고 | 1개 |
P001 | A002 | 미니카 | 2개 |
P002 | A003 | 인형 | 1개 |
P002 | A001 | 레고 | 2개 |
P003 | A003 | 인형 | 2개 |
P003 | A002 | 미니카 | 1개 |
2️⃣ 제 2정규화(2NF)
Primary Key(기본키) 와 Composite Key(복합키)
Primary Key : 한 줄의 데이터를 구분할 수 있는 유일한 키
Composite Key : 데이터를 대표하는 키가 여러 개의 컬럼으로 구성된 것
레고 상품명이 변경된다고 할지라도 1개의 컬럼값만 변경해 주면 됩니다.
[상품]
상품번호 | 상품명 |
---|
A001 | 레고 |
A002 | 미니카 |
A003 | 인형 |
3️⃣ 제 3 정규화 ( 3NF )
A → B → C의 관계를 가지고 있을때, A와 B, B와 C를 묶어 다른 테이블로 분리하는 것
[주문]
주문번호 | 날짜 | 고객번호 |
---|
P001 | 10/23 | U001 |
P001 | 08/13 | U002 |
P001 | 09/07 | U003 |
[고객]
고객번호 | 이름 | 나이 |
---|
U001 | 철수 | 13 |
U002 | 영희 | 15 |
U003 | 훈이 | 12 |
⛔️ 내가 만든 ERD설계도


ERD 링크
상품정보