새소식

반응형
Database/DATABASE 일반

DKNF( Domain-Key Normal Form)

  • -
반응형

DKNF 즉, 도메인- 키 정규형을 뜻한다. 

 

상당히 많은 자료가 있으나 (영문) 한글이 없다.

그래서 나름대로 필자의 지식과 여러 책을 조합하여 글을 적어본다.

 

도메인-키 정규형(DKNF)의 아이디어는 모든 가능한 종류의 종속성과 제약조건을 고려하는 궁극적 정규형을 정의하는 것이다.

어떤 릴레이션에서 지켜져야 되는 모든 제약조건과 종속성들이 단순히 그 릴레이션에 대한 도메인 제약조건과 키 제약조건만

지켜질 때 그 릴레이션은 도메인-키 정규형에 속한다고 한다.

 

 

도메인-키 정규형(DKNF)에 속하는 릴레이션에 대해서는 투플 내의 각 에트리뷰트 값이 적절한 도메인에 속하고, 모든 키 제약

조건이 지켜지고 있는지 만을 확인 함으로써 모든 데이터베이스 제약조건이 지켜지고 있음을 간단하게 알 수 있다.

 

첫번째 예시를 보면 다음과 같다.

 

 

다음과 같이 특별한 통장이 있다고 생각해보자.

계좌번호가 9로 시작하며 최소 잔고가 2500원 (무조건)인 통장은 이자를 더 준다.

이러한 상황이 있을때 도메인 키 정규형을 이용하여 다음과 같이 만들수 있다.

 

 

 

 

 

 

 

Regular-acct-schema = (지점명,계좌번호,잔고)

Special-acct-schema = (지점명,계좌번호,잔고) → 도메인 제약조건 (계좌번호 9로 시작,잔고2500이상)

 

결국 Special-acct-schema 의 제약조건이 지켜짐으로 인해서 도메인-키 정규형(DKNF)에 속한다고 할 수 있다.

 

 

두번째 예시를 보면 다음과 같다.

두번째 예시는 실제적으로 DKNF가 실제적으로 잘 사용되지 못하는 이유를 보여준다. 물론 DKNK 정규형을 적용한 것이다.

 

제조사 = T,R 이며 제조국= 일본 경우에는 차번호(고유번호)의 첫번째 자리가 J이다.

 

 

제조사 = H,A 이며 제조국= 일본 경우에는 차번호(고유번호)의 두번째 자리가 J이다.

 

이와 같은 제약조건을 검사하는 일반적인 함수를 작성하지 않고는 이런 제약조건들을 표현 할 수 있는 간단한 방법이 존재하지 않는다.

 

필자의 생각을 정리하면 DKNF는 도메인에서 키를 정규화 함으로써 (도메인에서 키의 제약조건을 걸어버림) 정규화를 진행 하는 것으로생각된다.

 

 

 

참조 : Fundamentals of Database System / 서울 산업대학교 전자계산학과 석상기 교수님 강의자료

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.