데이터베이스에서 삽입 이상(Insertion Anomaly)이나 삭제 이상(Deletion Anomaly)이 전혀 발생하지 않을 때, 해당 릴레이션은 도메인-키 정규형(DKNF, Domain-Key Normal Form)을 만족한다고 말합니다.
DKNF는 모든 정규화 단계 중 가장 높은 수준의 정규형입니다. 이 단계에 도달하면 삽입 이상과 갱신 이상이 완전히 제거되며, 모든 제약조건이 도메인 제약과 키 제약만으로 검증됩니다.
DKNF의 전제 조건
하나의 테이블이 도메인-키 정규형을 만족하려면 반드시 4NF(제4정규형), 3NF(제3정규형)를 포함한 하위 정규형들을 모두 충족해야 합니다. 즉, DKNF는 다음 세 가지 제약조건을 기반으로 정의됩니다.
1. 도메인 제약조건 (Domain Constraint)
속성(Attribute)의 값은 미리 정의된 특정 값의 집합 범위 안에 있어야 합니다. 예를 들어, 직원 ID(EmployeeID)는 반드시 네 자리 숫자로 구성되어야 한다는 규칙을 들 수 있습니다.
| EmpID | EmpName | EmpAge |
| 0921 | Tom | 33 |
| 0922 | Jack | 31 |
위 예제에서 EmpID는 네 자리 숫자라는 도메인 규칙을 준수하고 있으며, EmpAge 역시 유효한 나이 범위 내의 값을 가집니다.
2. 키 제약조건 (Key Constraint)
특정 속성 하나, 혹은 여러 속성의 조합이 해당 릴레이션의 후보키(Candidate Key) 역할을 해야 한다는 제약입니다. 후보키는 튜플을 고유하게 식별할 수 있어야 하며, 중복되거나 NULL 값을 가질 수 없습니다.
3. 일반 제약조건 (General Constraint)
일반 제약조건은 데이터베이스에 존재하는 모든 릴레이션의 집합에 적용되는 술어(Predicate)를 의미합니다. 업무 규칙이나 비즈니스 로직에서 파생되는 추가적인 무결성 요구사항들이 여기에 해당합니다.
DKNF의 핵심 원칙과 실무적 한계
도메인-키 정규형의 핵심 원칙은 다음과 같습니다. 모든 제약조건은 해당 릴레이션에 적용된 도메인 제약조건과 키 제약조건의 논리적 귀결(logical consequence)이어야 한다는 것입니다. 다시 말해, 별도의 외부 규칙 없이 도메인과 키 제약만으로 데이터 무결성이 완전히 보장되어야 합니다.
다만 이론적으로 가장 완벽한 정규형임에도 불구하고, 실무에서 DKNF의 실질적인 활용도는 낮은 편입니다. 대부분의 실제 데이터베이스 설계에서는 3NF나 BCNF, 필요에 따라 4NF까지만 적용하는 경우가 일반적이기 때문입니다.