정규화
- 정규화는 논리적 데이터 모델을 일관성이 있고 중복을 제거하여 보다 안정성을 갖는 바람직한 자료구조로 만들기 위해 여러 단계를 거친다.
- 1차 정규형에서부터 5차 정규형과 BCNF까지 구성되어 있다.
- 대체로 적절하고 일관성을 유지하면서 중복이 없는 논리적 데이터 모델을 구축하는 데에는 흔히 3차 정규형이 사용된다.
정규화의 의미
- 잘 만들어진 데이터 모델이라고 해도 엔티티에 데이터를 삽입, 수정, 삭제할 때 오류가 발생할 개연성을 가지고 있다. 이러한 것들을 변경 이상이라 한다. 여기에는 구체적으로 삽입 이상, 수정 이상, 삭제 이상 등이 있다.
- 변경 이상이 발생하는 엔티티를 그대로 운용하게 되면 데이터가 신뢰할 수 없는 값들로 채워질 가능성이 있다. 즉, 데이터의 일관성, 무결성을 해칠 가능성이 있다.
- 정규화 과정을 통해서 변경 이상의 엔티티를 정규화된 엔티티로 변환하게 된다.
- 입력 이상
- 별도의 사실이 발생하기 전까지 원하는 데이터를 삽입할 수 없음. 어떤 데이터를 삽입하려고 할 때 불필요하게 원하지 않는 데이터도 함께 삽입된다.
- 삭제 이상
- 일부 정보를 삭제함으로써 유지되어야 할 정보까지도 삭제되는 연대 삭제가 발생한다.
- 갱신 이상
- 일부 속성 값을 갱신함으로써 원하지 않는 정보의 이상 현상(무결성 파괴, 정보의 모순성)이 발생한다.
정규화의 장점
- 중복 값이 줄어든다.
- NULL 값이 줄어든다.
- 복잡한 코드로 데이터 모델을 보완할 필요가 없다.
- 새로운 요구 사항의 발견 과정을 돕는다.
- 업무 규칙의 정밀한 포착을 보증한다.
- 데이터 구조의 안정성을 최대화한다.
정규화 단계
1차 정규형(1NF)
- 정의
- 모든 속성은 반드시 하나의 값을 가져야 한다. 즉, 반복 형태가 있어서는 안 된다.
- 각 속성의 모든 값은 동일한 형식이어야 한다.
- 각 속성들은 유일한 이름을 가져야 한다.
- 레코드들은 서로 간에 식별 가능해야 한다.
- 정규화 작업
- 고객 엔티티의 계약일 속성의 값이 여러 건이 된다면 1차 정규형을 위배하는 것이 된다.
- 어떤 속성이 다수의 값을 가지고 있다면 M:1 관계의 새로운 엔티티를 추가한다.
- 관계형 모델에서는 관계 정의상 한 속성이 하나의 값만을 가져야 한다.
- 비정규형 관계가 관계로서의 모습을 갖추기 위해선 여러 개의 복합적인 의미를 가지고 있는 속성이 분해되어 하나의 의미만을 표현하는 속성들로 분해되어야 한다. 즉, 속성 수가 늘어나야 한다.
- 비정규형 관계가 관계로서의 모습을 갖추기 위해선 하나의 속성이 하나의 값을 가질 수 있어야 하며, 이 조건을 만족시키기 위해선 로우가 늘어나야 한다.
- 분석 또는 모델링 진행 과정에서 발생하며, 최종적인 모델링 완성 단계에서는 나올 수 없다.
2차 정규형(2NF)
- 정의
- 식별자가 아닌 모든 속성은 식별자 전체 속성에 완전 종속되어야 한다.
- 기본키가 아닌 모든 컬럼이 기본키에 종속적이어야 2차 정규형을 만족할 수 있다.
- 정규화 작업
- 위 그림에서 식별자가 학번+코스코드로 이루어진 학과등록 엔티티에서 학번 속성에 평가코드, 평가내역 속성들이 종속적이다. 그렇기 때문에 2차 정규형을 위반하고 있는 것이다.
- 위 그림에서 식별자가 학번+코스코드로 이루어진 학과등록 엔티티에서 코스코드 속성에 코스명, 기간 속성들이 종속적이다. 그렇기 때문에 2차 정규형을 위반하고 있는 것이다.
- 의미상의 주어, 즉 본질식별자를 알아야 식별자 부분 종속인지를 구분할 수 있다.
- 속성의 의미가 명확해야 종속성을 비교할 수 있다.
3차 정규형(3NF)
- 정의
- 2차 정규형을 만족하고 식별자를 제외한 나머지 속성들 간의 종속이 존재하면 안 된다.
- 정규화 작업
- 위 그림에서 학과등록 엔티티에서 평가코드, 평가내역 속성들이 서로 간에 종속적이다. 즉, 평가내역 속성은 평가코드 속성에 종속적이다. 그렇기 때문에 이것은 3차 정규형을 위반하고 있는 것이다.
BCNF 정규형
- 정의
- 모든 결정자가 키인 릴레이션이 BCNF이다. 반대로 어떠한 결정자 하나라도 키가 아닌 릴레이션이라면 BCNF가 될 수 없다.
- 기존의 2차 정규형과 3차 정규형을 보완하려는 목적으로 만들어졌다.
- 3차 정규형의 문제점
- 한 릴레이션에 여러 개의 후보키가 있다.
- 모든 후보키가 적어도 둘 이상의 속성으로 이루어진 복합키이다.
- 모든 후보키가 적어도 하나 이상의 공통 속성이 포함되는 경우이다.
- 3차 정규형을 만족하고 BCNF가 아닌 경우
- 각 속성이 단 하나의 값으로 구성된 경우
M:M 관계 해소
M:M 관계의 의미
- 실제 업무 중 대부분은 M:M 관계이다.
- 키 엔티티와 키 엔티티 간에는 대부분 M:M 관계이다. 데이터 모델 상세화 단계에서 M:M 관계가 해소되면서 액션 엔티티가 새롭게 도출되기도 한다.
- 지속적으로 발생되는 대다수의 엔티티는 M:M 관계이다. 즉, 기업의 업무 내용을 관리하는 데이터는 대부분 이러한 관계에 의해서 생겨난 엔티티라고 볼 수 있다.
M:M 관계 해소의 의미
- M:M 릴레이션십은 새로운 릴레이션 엔티티를 추가하여 M:1 관계로 변경한다.
- 연관 실체 엔티티는 M:M 관계 미결 시 간과해 버렸을 추가 업무 규칙 또는 업무 논리를 내포할 수 있다.
- M:M 관계는 데이터 종속성에 대한 결정을 어렵게 하여, 모델의 논리적 완성과 부분 집합 식별 능력을 제한한다.
참조 무결성 규칙 정의
- 관계 테이블의 모든 외부 식별자 값은 관련 있는 관계 테이블의 모든 주 식별자 값이 존재해야 한다.
- 실체의 주 식별자와 마찬가지로 외부 식별자도 데이터 무결성에 관한 업무 규칙을 내포하고 있다.
- 데이터베이스 설계 관점에서 선택하지 말고, 사용자의 업무 규칙에 따라 적절한 규칙을 선택한다.
입력 규칙
자식 실체의 인스턴스를 입력할 때 참조 무결성 규칙의 종류
- Dependent
- 대응되는 부모 실체에 인스턴스가 있는 경우에만 자식 실체에 입력을 허용한다.
- Automatic
- 자식 실체 인스턴스의 입력을 항상 허용하고, 대응되는 부모 건이 없는 경우 이를 자동 생성한다.
- Nullify
- 자식 실체 인스턴스의 입력을 항상 허용하고, 대응되는 부모 건이 없는 경우 자식 실체의 참조키를 Null 값으로 처리한다.
- Default
- 자식 실체 인스턴스의 입력을 항상 허용하고, 대응되는 부모 건이 없는 경우 참조키를 지정된 기본 값으로 처리한다.
- Customized
- 특정한 검증 조건이 만족되는 경우에만 자식 실체 인스턴스의 입력을 허용한다.
- No Effect
- 자식 실체 인스턴스의 입력을 조건 없이 허용한다.
삭제 규칙
부모 실체의 인스턴스를 삭제할 때 사용되는 참조 무결성 규칙의 종류
- Restrict
- 대응되는 자식 실체의 인스턴스가 없는 경우에만 부모 실체 인스턴스 삭제를 허용한다.
- Cascade
- 부모 실체 인스턴스의 삭제를 항상 허용하고, 대응되는 자식 실체의 인스턴스를 자동 삭제한다.
- Nullify
- 부모 실체 인스턴스의 삭제를 항상 허용하고, 대응되는 자식 실체의 인스턴스가 존재하면 그것의 참조키를 Null 값으로 수정한다.
- Default
- 부모 실체 인스턴스의 삭제를 항상 허용하고, 대응되는 자식 실체의 인스턴스가 존재하면 그것의 참조키를 기본 값으로 수정한다.
- Customized
- 특정한 검증 조건이 만족되는 경우에만 부모 실체 인스턴스의 삭제를 허용한다.
- No Effect
- 부모 실체 인스턴스 삭제를 조건 없이 허용한다.
'DAP' 카테고리의 다른 글
[DAP 전문가 가이드] 4.3.5 논리 데이터 모델 품질 검토 (0) | 2025.04.30 |
---|---|
[DAP 전문가 가이드] 4.3.4 이력 관리 정의 (0) | 2025.04.29 |
[DAP 전문가 가이드] 4.3.3 엔티티 상세화(1) (0) | 2025.04.29 |
[DAP 전문가 가이드] 4.3.2 속성 정의 (0) | 2025.04.29 |
[DAP 전문가 가이드] 4.3.1 논리 데이터 모델링 이해 (0) | 2025.04.29 |