ch8. 관계형 DB의 설계

Sieun·2023년 2월 4일
0

데이터베이스

목록 보기
6/7
post-thumbnail

8.1 원자적 도메인과 제 1 정규형(First Normal Form)

🔹 도메인의 원소들이 나눌 수 없는 단위로 되어있을 때 그 도메인은 원자적(Atomic)이라고 함.
🔹 릴레이션 스키마 R의 모든 원소들의 도메인이 원자적일 때 R이 제 1 정규형(1NF)에 속한다고 함.
🔹 예시: 직원번호의 첫 번째 두 글자는 부서를 나타내며 나머지 네 숫자는 그 부서 내에서 직원의 고유한 식별 번호라 하자. 이러한 숫자의 예로 CS3001이나 EE1127이 있을 수 있다. 이러한 직원번호는 더 작은 부분으로 나뉠 수 있으므로 원자성을 갖지 않는다. 만일 이와 같이 직원번호를 구성하는 속성을 지닌 릴레이션 스키마가 있다면 이 스키마는 제 1 정규형이 아니다.
📢 많은 타입의 비원자적 값들이 존재하지만, 이 장에서는 모든 릴레이션을 제 1 정규형으로 한정하며 이에 따라 모든 도메인은 원자적이다.

🔹 잘못된 DB 디자인의 영향
➡️ 정보의 중복 - Redundancy
➡️ 수정(insert, delete, update) 시에 문제 발생 - Null values
➡️ 특정 정보를 표현할 수 없음

✅ 잘못된 테이블을 제대로 변경하려면 분해하면 됨 - 엔티티 1개당 테이블 1개 ➡️ 분해는 손실 분해(lossy decomposition)와 비손실 분해(lossless decomposition)로 나뉜다.

🔹 분해를 위해서는 다음의 2가지 절대 조건을 만족해야 한다.
1) Attribute preservation (속성 보존): 어떠한 속성도 손실되어서는 안 된다.

  • 원본 스키마 R의 모든 속성이 분해 스키마 (R1, R2)에 나타나야 함.
R = R1 U R2

2) Lossless join (비손실 조인): 어떠한 데이터도 손실되어서는 안 된다.

🔹 분해가 비손실 조인인지 아는 방법
➡️ 정리: R의 분해 R1, R2에 대하여, 다음의 의존 관계 중 적어도 하나만 만족시키면 R1과 R2는 비손실 조인이다.

R1 ∩ R2 → R1
R1 ∩ R2 → R2

➡️ 이 분해 과정을 "정규화"라고 한다.
➡️ 정규화 이론은 함수 종속(FD)과 다중값 종속(MVD)로 구성된다.

8.2 함수 종속(FD, Functional Dependencies)

🔹 릴레이션의 인스턴스는 실제 세계의 제약조건들을 만족하는 legal 릴레이션이다. 모든 릴레이션 인스턴스가 legal할 때 DB에 대한 legal한 인스턴스가 된다.
🔹 실제 세계 제약조건 중에서 가장 널리 쓰이는 유형은 공식적으로 키(수퍼 키, 후보 키, 주 키)이거나 함수 종속이며 아래의 정의와 같이 나타낸다.
➡️ 수퍼 키 K가 릴레이션 R의 부분집합이고 r(R)에 있는 모든 튜플들의 쌍 t1, t2에 대해 t1≠t2 이면 t1[K]≠t2[K] 라는 조건이 성립되면 K는 r(R)의 수퍼 키이다.
➡️ 릴레이션에 있는 서로 다른 두 개의 튜플은 속성 집합 K에 대해 같은 값을 가질 수 없다는 뜻이다.

🔹 함수 종속: 어떤 속성들의 값들을 유일하게 가리키는 제약조건을 표현
🔸주어진 r(R)에 대하여 인스턴스 내의 모든 튜플의 쌍 t1, t2에 대해 t1[α]=t2[α] 이면 t1[β]=t2[β] 라는 조건이 성립되면, 인스턴스는 함수 종속 α→β 를 만족한다. ➡️ α는 수퍼 키이다.
🔸함수 종속을 만족하면 함수 종속 α→β는 스키마 r(R)을 보존(hold)한다.

🔹 예시
A = 1 1 3
B = 4 5 7
위 R(A,B) 인스턴스에서, A→B는 스키마를 hold하지 않는다. 하지만 B→A는 hold할 가능성이 있다.
🚨FD(함수종속)은 데이터를 보고 찾아낼 수 있는 것이 아님🚨

🔹 FD의 사용: satisfy & hold
1) 릴레이션의 인스턴스가 주어진 FD의 집합 F를 만족시키는지 검사하기 위해 사용 - satistfy
2) 릴레이션의 집합에 대한 제약조건을 명시하기 위해 사용 - r에 대한 모든 적법한 릴레이션이 FD 집합 F를 만족시키면, F는 r(R)을 hold한다.

🔹 α→β 형태의 함수 종속은 β⊆α 이면 trivial(자명하다)
α: 결정자, β: 종속자

🔹 주어진 FD의 집합 F가 릴레이션 r(R)에 대해 성립한다고 하면 다른 어떤 FD들 또한 그 릴레이션에 대해 성립한다는 것을 유출해낼 수 있다.
➡️ F에 의해 논리적으로 함축된 FD의 집합을 F의 closure라고 하며 F⁺ 라고 표기한다.

🔹 Armstrong's Axioms (암스트롱의 공리)

  • Reflexivity rule (재귀 규칙): if β⊆α, then α→β
  • Augmentation rule (증가 규칙): if α→β, then γα→γβ
  • Transitive rule (이행 규칙): if α→β, and β→γ, then α→γ
    ➡️ sound(잘못된 FD 생성 X) & complete(모든 closure를 생성)
    ➡️ 확장
  • 연합 규칙: α→β, α→γ , then α→βγ
  • 분해 규칙: α→βγ, then α→β, α→γ
  • 가이행 규칙: α→β, γβ→δ, then αγ→δ

🔹 Attribute Closure Algorithm - p.313

🔸AG가 후보키인가?
1. AG가 수퍼키인가?
➡️ AG→R 인가? == (AG)⁺⊇R 인가?
2. AG의 부분집합 중 하나가 수퍼키인가?
➡️ A→R 인가? == (A)⁺⊇R 인가?
➡️ G→R 인가? == (G)⁺⊇R 인가?

🔹 Attribute Closure Algorithm의 용도

🔹 Extraneous Attributes: FD 집합에서 어떤 FD에서 속성을 삭제하여도 그 closure를 변화시키지 않는 속성

🔹 정규화의 목표: 특정 릴레이션 R이 good 형태인지 결정
➡️ 아닐 경우, 분해
➡️ 릴레이션을 FD로 분해할 때, No redundancy & Dependency preservation

8.3.2 BCNF 정규형

🔹α→β가 명백한 함수 종속이다. (β⊆α)
🔹α가 스키마 R의 수퍼 키이다.

profile
AI/ML 공부중👩🏻‍💻

0개의 댓글