2021. 4. 12. 17:39ㆍOracle 공부
이번에는 정규화에 대해서 알아볼 건데요.
정규화
정규화는, 테이블을 나누는 것을 의미 합니다.
테이블이 이렇게 만들어 져 있을 경우에, 여러가지 문제가 있습니다.
1. 카테고리가 여러개의 값을 가짐.
2. 중복된 값을 가짐.
등등...
정규화는 1부터 5까지 있는데요 실제로는 3정규화 또는 BCNF 까지만 정규화를 진행한다고 합니다.
제 1정규화 -> 데이터를 원자값으로 만들기.
원자값이란 하나의 값을 의미 합니다. ( 카테고리는 다중값을 가지고 있죠? )
분리해서 아래와 같이 만들어 주면 됩니다. ( 카테고리 속성 분해 )
※ 분리할 경우 N : M 관계가 되기 때문에 맵핑테이블을 만들어 주어야 함.
제 2정규화 -> 부분함수 종속성 제거
1정규화를 진행하고 나온 테이블 중에서 title 이 있는 테이블을 보면,
title 부터 regdate 까지 따로
type 부터 address 따로 부분적으로 title에 종속되어 있음을 알 수 있습니다.
그래서 아래와 같이 테이블을 분리 시켜주어야 합니다.
제 3정규화 -> 이행함수 종속성 제거 ( 기본키가 아닌 속성은 기본키에만 의존 해야 한다 )
2정규화를 진행하고 나온 테이블 중에서 상품 테이블을 보면,
상품번호가 PK(기본키) 인데, user_id 부터 user_address 까지는 user_id가 변경이 되면, 그 뒤에 있는 속성은 변경이 됩니다.
즉. 기본키가 2개 처럼 보입니다.
그래서 아래와 같이 분리시켜 주어야 합니다.
※ 여기까지 정규화를 진행했을 때, 나온 테이블을 보면, 총 5개가 됩니다. ※
이렇게 정규화가 된 테이블을 보면, 중복된 행도 없고, 다중값을 가진 행 등등의 문제가 보이지 않습니다.
테이블은 이런 식으로 정규화를 해서 만들어 주어야 합니다.
이 뒤로 BCNF , 제 4정규화 , 제 5정규화 가 있는데, 개념만 알고 있으면 된다고 합니다.
BCNF -> 결정자들 중에서 후보키가 아닌 속성 제거
제 4정규화 -> 다치 종속 제거
제 5정규화 -> 조인 종속성 제거
오늘은 이렇게 정규화에 대해서 간단하게 알아 보았습니다.
고생하셨습니다.
'Oracle 공부' 카테고리의 다른 글
Day 42 - hr 계정 초기화 (0) | 2021.04.14 |
---|---|
Day41 - 물리적 데이터 모델링 (0) | 2021.04.13 |
Day40 - 논리적 데이터 모델링 (0) | 2021.04.12 |
Day39 - 개념적 데이터 모델링 (0) | 2021.04.12 |
Day39 - 데이터 모델링 (0) | 2021.04.12 |