이유's Programming/DBMS

2-2. 정규화 ( 제 3 정규형, 반정규화와 성능 )

살아가는 이유_EU 2021. 3. 15. 11:33
728x90
반응형

저번시간에 배워봤던 정규화에 대해서 알아봤고 이제는 제 3정규형에 대해 알아보자. 

 

제 3정규형 : 엔터티의 일반속성 간에는 서로 종속적이지 않는다. 

 

앞서 말씀 드린대로 정규형은 이제 조금씩 조금씩 다듬는 것이다. 

여기서 제 3 정규형에 대한 말은  "이행적 종속" 과 연관이 있다. 

 

주문상세 테이블 

 

 

예를 들면 요런 테이블이 있다고 가정해보자. 이럴 경우에 봤을 때 몇가지 문제가 생긴다. 

 

* 데이터 갱신 이상 문제 

예를 들면, 고객이 이름을 바꿔 고객명을 바꿀 때 모든 주문 상세 테이블의 고객명을 따로따로 업뎃을 해주어야한다. 

 

예를 들면, 에이미가 베이미로 바꾼다고 하면 -> 두 번의 작업을 해주어야하는 것이다. 

데이터 갱신 문제

요렇게 되면 주문과는 전혀 연관 없는 트랜잭션이므로 이를 확인해주어야한다. 이럴 경우 두번의 쓸데없는 작업이 생기므로 "정규화"는 정말 중요하다~ 

 

 

여기까지 봤을 때,, 나는 제2정규형과 제 3정규형이 조금 혼동이 오기 시작했다. 둘다 종속적인 관계를 띄어내는 그런 작업이라고 보여졌다. 

 

그래서 요기저기를 찾아봤는데..! 나와 같은 질문을 한 사람이 있었다. 

okky.kr/article/396918

 

OKKY | 안녕하세요, 데이터베이스 2정규식과 3정규식의 차이점에 대한 궁금한게 있습니다.

제 2 정규식의 정의는 모든 속성은 PK에 속해야 하고 제 3 정규식의 정의는 이행적 함수를 모두 제거해야 한다. 라고 하던데 결국 같은 말 아닌가요? 제 3 정규식에서 이행적 함수를 제거한다는건

okky.kr

 

데이터 중복 

* 데이터 갱이상 문제 

* 데이터 갱신* 데이터 갱신 이상 문제  이상 문제 

제 2정규형과 제 3정규형이 약간 헷갈렸지만..! 가장 중요한건 우선 PK 컬럼

 

우선 제 3정규형은 먼저 제 2정규형이 모두 수행되고 나서 설정된다. A(FK), B,  C, D, E 라는 컬럼을 가진 테이블이 있다고 가정을 해보자. 

먼저, 제 2정규형을 진행한다고 가정을 해볼때, B 컬럼이 -> C 컬럼에 종속적인 영향을 미치는 것을 파악했다. 또한, 이럴 경우, C 의 컬럼은 A 의 컬럼에 영향을 받지 않는다. 

이럴 경우 진행되는 것이 제 2정규형이다 .

 

이렇게 진행되고 나면 이제 테이블이 A,B, D, E 테이블 하나 그리고 B,C 테이블 하나로 나누어질 것이다. 이제 진행하는 것이 제 3정규형인데, 이럴 경우에 해당 테이블을 확인해볼 수 있도록 한다. 

이럴 경우에는 이미 B, D, E 컬럼의 경우는 A 컬럼에 종속적인 관계임이 확인이 된 것이다. 하지만 이행적 종속관계라는 것은 그 안에 또 내부적으로 종속되는지에 대한 것이다 .

따라서 B,D, E 컬럼의 경우 A 와도 종속적이지만 내부에 B 의 컬럼이 D 의 컬럼 에서 결정자 역할을 하므로 이의 경우는 제 3정규형의 과정이라고 볼수 있따. 

 

 

 

728x90
반응형