정규화는 테이블을 작은 단위로 나누고 관계를 조직화하여 데이터 중복을 제거하여 데이터의 불일치성과 이상 현상을 방지합니다.
주문테이블
주문번호 | 고객명 | 과일명 | 수량 | 주문일자 |
---|
1 | 김땡떙 | 사과 | 2 | 2023-01-01 |
1 | 김땡땡 | 바나나 | 1 | 2023-01-01 |
2 | 이땡떙 | 수박 | 1 | 2023-01-02 |
3 | 박땡떙 | 딸기 | 1 | 2023-01-03 |
제1정규화
각 테이블의 모든 컬럼은 하나의 값만을 가지며, 중복된 데이터가 없어야 한다
중복된 데이터를 제거하고, 각 행은 유일한 식별자(Primary Key)에 의해 구분한다
주문번호 | 고객번호 | 과일번호 | 수량 | 주문일자 |
---|
1 | 1 | 1 | 2 | 2023-01-01 |
1 | 1 | 2 | 1 | 2023-01-01 |
2 | 2 | 3 | 1 | 2023-01-02 |
3 | 3 | 4 | 1 | 2023-01-03 |
제2정규화
테이블을 더 작은 두 개의 테이블로 분리함으로써 중복 데이터를 줄이고 테이블의 구조를 개선하는 작업이다
부분적 종속성을 제거하기 위해 기본키에 완전 종속된 속성만 남기고 나머지는 별개의 테이블로 분리한다
고객테이블
주문번호 | 고객번호 | 주문일자 |
---|
1 | 1 | 2023-01-01 |
2 | 2 | 2023-01-02 |
3 | 3 | 2023-01-03 |
과일 테이블
제3정규화
A -> B -> C와 같이 속성들이 서로 종속 관계를 갖는 경우가 있다
이행적 종속성이라고 하는데 이를 제거하여 제 3정규화를 한다
고객 테이블
과일 테이블
주문 테이블
주문번호 | 고객번호 | 주문일자 |
---|
1 | 1 | 2023-01-01 |
2 | 2 | 2023-01-02 |
3 | 3 | 2023-01-03 |
주문번호 테이블