Database - 7.5 비정규화

Mingi Shin·2023년 6월 16일
0

Database

목록 보기
13/16
post-custom-banner

정규화가 진행되면

  • 테이블의 중복과 갱신 이상이 줄어든다.
  • 무결성 제한 조건을 수행하기 위한 코드의 양도 줄어든다.

정규화는 DB 설계에 있어 중요한 요소지만 high-level의 정규화를 만족하는 schema가 성능적인 관점에서 항상 최적은 아니다.
정규화가 1NF, 2NF ... 진행됨에 따라 테이블은 적어도 2개로 쪼개진다. 테이블의 분할은 추후 더 많은 조인 연산을 필요로 한다.

위 테이블은 부분 함수 종속성은 없지만 이행적 함수 종속성은 존재하는 제 2정규화를 만족하는 테이블이다. 만약 ST_NO가 11002인 학생의 DEPT 이름과 DEPT 전화 번호를 select하라는 쿼리를 짜야한다고 하자.

SELECT	DEPT, DEPT_PHONE
FROM 	STUDENT1
WHERE ST_NO = 11002;

다음과 같이 조인 없이 필요 정보를 select 할 수 있다.

그러나, 이행적 함수 종속성을 제거하기 위한 제 3정규화를 만족하기 위해 정규화를 진행했다면 기존의 테이블은 2개로 분할된다. 같은 내용의 쿼리는 다음과 같다.

SELECT 	ST.DEPT, D.DEPT_PHONE
FROM	STUDENT2 as ST, DEPARTMENT as D
WHERE	ST_NO = 11002 and ST.DEPT = D.DEPT;

다음과 같이 같은 내용의 쿼리일지라도 조인 연산이 한 번 더 들어간다.

비정규화함으로써 DB 설계자는 중복과 갱신 이상을 일부 허용하더라도 성능의 향상을 달성할 수 있다.

profile
@abcganada123 / git:ABCganada
post-custom-banner

0개의 댓글