릴레이션 스키마의 설계
- 애트리뷰트, 엔티티, 관계성을 파악
- 관련된 애트리뷰트들을 릴레이션으로 묶음
- 고려사항
1) 애트리뷰트들간의 관계성(relationship): 데이터 종속성
-> 연관있는 애트리뷰트들끼리 하나의 릴레이션에 들어가야 한다!
2) 효율적인 데이터 처리
3) 데이터의 일관성
- 변칙적 성질의 예방
- 데이터 변경 시의 이상현상 (삽입·삭제·변경을 할 수 없는 상황)
스키마 설계와 변환
- 스키마 설계: 데이터베이스의 논리적 설계
1) 애트리뷰트들과 이들의 제약조건(종속성)들을 수집
2) 수집된 결과를 명시된 제약조건에 따라 바람직한 여러 개의 릴레이션으로 분할
-> 스키마 변환- 스키마 변환의 원리
1) 정보 표현의 무손실: 분해된 릴레이션들을 자연 조인하면 원래의 릴레이션
2) 최소의 데이터 중복: 갱신 이상에 대응하기 위해서
3) 분리의 원칙: 독립된 관계성은 별도의 릴레이션으로 분리
-> 하나의 종속성은 하나의 릴레이션으로 표현!
이상
이상: 데이터 변경 시 발생하는 문제
- 삭제 이상: 한 튜플을 삭제함으로써 유지해야 될 정보까지도 삭제되는 연쇄 삭제 현상이 일어나게 되어 정보 손실이 발생하는 현상
- 삽입 이상: 어떤 데이터를 삽입하려고 할 때 불필요하고 원하지 않는 데이터도 강제로 삽입해야 하는 현상
- 갱신 이상: 중복 데이터의 일부 갱신으로 정보의 모순성(inconsistency)이 발생
이상의 원인과 해결책
- 이상의 원인: 하나의 개체에 속한 애트리뷰트들 간에 존재하는 여러 개의 종속관계를 하나의 릴레이션으로 표현하기 때문
- 이상의 해결책: 애트리뷰틀 간의 여러 종속 관계를 분해하여 각각 하나의 릴레이션으로 표현
- 하나의 종속성은 하나의 릴레이션으로 표현
-> 정규화 과정
⇒ 이상현상을 해결해가는 과정이 좋은 DB 스키마를 설계하는 과정이다!함수 종속(FD: functional dependency)의 정의
- 애트리뷰트 X의 값이 결정되면 애트리뷰트 Y의 값이 딱 하나만 결정(이때 애트리뷰트 X, Y는 릴레이션 R의 부분집합)
-> 애트리뷰트 Y는 애트리뷰트 X에 함수종속(X → Y)- 애트리뷰트 X는 Y를 (함수적으로) 결정
- X를 결정자(determinant)
- Y를 종속자(dependent)- X나 Y는 각각 두 개 이상의 애트리뷰트 집합이 될 수 있음: X와 Y는 릴레이션 R의 부분집합
- 완전 함수 종속: 결정자의 부분집합만으로는 함수종속이 성립하지 않는 것
- 부분 함수 종속: 결정자의 부분집합만으로도 함수종속이 성립하는 것
정규형 (normal form)
- 정의
- 어떤 일련의 제약조건을 만족하는 릴레이션
- 정규화, 즉 스키마 변환으로 정규형을 만듦
- 정규화의 원칙
- 위에서 설명한 ①정보 표현의 무손실, ②최소의 데이터 중복, ③분리의 원칙
제1정규형 (1NF)
- 정의: 모든 도메인이 원자 값(atomic value)만으로 된 릴레이션
- 1NF 이상의 원인:
- 기본 키로 식별되는 개체와 무관한 애트리뷰트 존재
- 즉, 관계 없이 같은 릴레이션 내에 존재하는 애트리뷰트 때문에(부분 함수 종속)
- 1NF 이상의 해결:
- 프로젝션으로 1NF 릴레이션을 분해 (부분 함수 종속을 제거) ⇒ 2NF
제2정규형 (2NF)
- 정의: 1NF이고, 키에 속하지 않는 애트리뷰트들은 모두 기본 키에 완전 함수 종속
- Heath의 무손실 분해 정리
- R(A, B, C)에서 함수 종속 A->B가 성립하면 R1(A, B), R2(A, C)로 무손실 분해가 가능
- 정보의 손실 없이 릴레이션을 분해
- 2NF 이상의 원인:
- 분해된 R1(A, B)와 R2(A, C)에서 B->C가 성립
- 즉, 이행적 함수 종속(TD, Transitive Dependency)이 문제!
- 2NF 이상의 해결:
- 프로젝션으로 2NF 릴레이션을 분해 (이행적 함수 종속을 제거) ⇒ 3NF
제3정규형 (3NF)
- 정의: 2NF이고, 키가 아닌 모든 애트리뷰트들은 기본 키에 이행적 함수 종속이 되지 않음
- 특징
- 키가 아닌 애트리뷰트 값의 갱신 시 불필요한 부작용(이상)은 발생하지 않음
- 모든 이원 릴레이션(애트리뷰트가 2개)은 3NF에 속함
- 3NF를 적용할 수 없는 경우(약점)
1) 복수의 후보 키를 가지고 있고
2) 후보 키들이 두 개 이상의 애트리뷰트들로 구성되고
3) 후보 키들의 애트리뷰트가 서로 중첩되는 경우
⇒ 보다 일반적인 Boyce/Codd Normal Form(BCNF)가 필요
- 3NF 이상의 원인(위의 약점 하에서 발생):
- 어떤 애트리뷰트A가 후보 키가 아님에도 제약조건(함수 종속)에 의해 다른 애트리뷰트B를 결정
- 한 애트리뷰트가 결정자이지만 후 보키가 아님
- 3NF 이상의 해결
- BCNF 정규형을 적용 ⇒ BCNF 정규형
보이스/코드 정규형 (BCNF)
- 정의
- 릴레이션 R의 결정자가 모두 후보 키이면 릴레이션 R은 BCNF에 속한다.
- 강한 제3정규형(strong 3NF)이라고도 함
- 릴레이션 R이 BCNF에 속하면 R은 제1, 제2, 제3 정규형에 속함
- BCNF 이상의 원인
- 한 애트리뷰트가 다른 애트리뷰트 값의 집합(set of values)를 결정
- 즉, 릴레이션 내에 두 개의 독립된 애트리뷰트가 1:N 관계로 대응하는 관계가 있다(다치 종속)
- 다치 종속 (MVD: Multivalued Dependency)
1) 정의: 릴레이션 R의 애트리뷰트의 부분 집합 A, B, C가 애트리뷰트 쌍(A, C)값에 대응되는 B값의 집합이 A값에만 종속되고 C값에는 독립적이면 B는 A에 다치종속이라 하고 A↠B로 표기한다.
2) Fagin: A↠B이면 A↠C도 성립, 즉 A↠B|C
3) 모든 FD는 MVD이다.- 즉, A→B이면 A↠B가 성립
4) MVD를 가진 릴레이션의 분해(Fagin의 정리)- R(A, B, C)에서 MVD A↠B|C를 만족하면 두 프로젝션 R1(A, B)와 R2(A, C)는 무손실 분해이다.
- BCNF 이상의 해결
- 다치 종속을 제거 ⇒ 제4정규형
제4정규형 (4NF)
- 정의
- 릴레이션이 R이 BCNF에 속하고 모든 MVD가 함수 종속(FD)이면 릴레이션 R은 4NF에 속한다.
-> 다치종속이 존재하는 릴레이션을 독립된 하나의 릴레이션으로 분해한 것
- n-분해(n-decomposable) 릴레이션
- n-way 순환 제약조건(n-way cyclick constraint)를 만족하는 릴레이션
-> n개 이상의 릴레이션으로 분해해야만 정보 무손실 분해가 되는 릴레이션
- 조인 종속
1) 의미: 릴레이션의 그의 어떤 프로젝션들을 조인한 결과와 똑같아야 한다는 제약조건
-> 릴레이션 R이 그의 프로젝션 A, B, … ,Z의 조인과 동일하면 R은 JD(A, B, …, Z)를 만족
2) 특징
- 릴레이션 R(A, B, C)가 JD (AB, AC)를 만족하면 한 쌍의 MVD A↠B|C도 성립- 4NF 이상의 원인
- 조인 종속 때문에 삽입 이상 발생
- 4NF 이상의 해결
- 어떠한 조인 종속도 없도록 분해하거나 조인 종속이 후보 키를 통하게 함 ⇒ 5NF
제5정규형 (5NF)
- 릴레이션 R에 존재하는 모든 조인 종속(JD)이 R의 후보 키를 통해 성립되면, R은 5NF
- 프로젝션-조인 정규형(PJ/NF, projection-join normal form)이라고도 함
- 후보 키를 통해 성립된다는 말의 의미?
- 릴레이션 내 조인 종속이 후보 키를 조인 애트리뷰트로 함
- 즉, 이 조인 종속(JD)에 포함되는 애트리뷰트 부분 집합은 모두 R의 슈퍼키