[데이터베이스설계론] 7주차 수업 내용 정리
복습: 전 회차의 연습문제
• 자연어에 의한 질의
• 상품 분류가 스마트폰에 속하며, 제조사가 Apple이고, 묘가다니 지점에서 판매 가격이 100,000엔 이하인 상품의 상품명과 상품번호를 알고자 함
• 제조사 관계 (상품번호, 상품명, 제조사) (R)
• 상품 분류 관계 (상품분류, 상품명) (S)
• 묘가다니 지점 관계 (상품번호, 판매가격, 재고) (T)
• 관계대수로 표현할 것
회답 예시 1
製造元(商品番号,商品名,商品元)(R)
商品分類(商品分類,商品名)(S)
茗荷谷支店(商品番号,販売価格,在庫)(T)
π 製造元.商品番号, 製造元.商品名
(σT.販売価格 < 100,000
(σR.製造元 = “Apple” and S.商品分類 = “スマートフォン” (R * S) * T)
회답 예시 2
製造元(商品番号,商品名,商品元)(R)
商品分類(商品分類,商品名)(S)
茗荷谷支店(商品番号,販売価格,在庫)(T)
π 製造元.商品番号, 製造元.商品名
(σR.製造元=“Apple” and S.商品分類 = “スマートフォン” and T.販売価格 < 100,000 (R*S*T))
회답 예시 3
製造元(商品番号,商品名,商品元)(R)
商品分類(商品分類,商品名)(S)
茗荷谷支店(商品番号,販売価格,在庫)(T)
π 製造元.商品番号, 製造元.商品名
((σR.製造元 = “Apple”R)*
(σS.商品分類 = “スマートフォン” S)*
(σT.販売価格 < 100,000T))
제1 정규형: 정규화의 동기
제1 정규형(First Normal Form: 1NF) by E. F. codd, 1972
- 관계 모델에서는 관계 대수와 관계 논리의 적용을 통해 데이터 조작을 수행함
- 속성의 값이 값의 집합일 경우에는 관계 대수와 관계 논리의 적용이 불가능함
- 관계의 속성 값은 모두 원자적이며, 그 이상 분해되지 않음
- 하나의 도메인이 다른 도메인의 직접곱이 아님
- 하나의 도메인이 다른 도메인의 멱집합이 아님
- 관계 대수와 관계 논리를 적용하기 위한 조건임
- 비제1정규형(NF²)
- 속성의 값이 원자적이지 않음
기본 키(主キー)와 슈퍼 키(とスーパキー) (리마인드)
- 기본 키는 튜플을 유일하게 식별할 수 있으며, 최소한의 속성 집합임
- 어떠한 데이터가 삽입되더라도 식별이 가능함
- 기본 키의 속성 값에는 널(NULL) 값이 허용되지 않음
- 슈퍼 키는 후보 키(候補キー)를 포함하는 속성 집합임
갱신 시 이상 更新時異常
튜플 삽입 이상 (Tuple insertion anomaly)
- 신입 판매원의 정보를 삽입하려고 함
- ‘담당 지역’과 ‘판매원’을 제외한 항목은 아직 미확정이므로 NULL이며, ‘상품 번호’는 NULL이 허용되지 않기 때문에 삽입 실패함
튜플 삭제 이상 (Tuple deletion anomaly)
- 기존 튜플을 삭제하지만, 남겨야 할 정보까지 삭제됨
- Q: 어떤 튜플을 삭제하면 정보 손실이 발생하는가?
- A: FH-27G3에 관한 정보가 사라지기 때문에 삭제 실패함
튜플 수정 이상 (Tuple modification anomaly)
- 하나의 수정이 여러 튜플의 수정을 필요로 함
- Q: 어떤 방식으로 수정하면 문제가 발생하는가?
- A: 판매원, 담당 지역, 상품명, 상품번호 등의 항목을 수정할 경우
정규화의 동기
- 갱신 시 이상(Update Anomaly)을 해소함
- 삭제로 인해 불필요하게 많은 정보가 소실됨
- 하나의 항목을 변경하기 위해 여러 부분의 변경이 요구됨
- 일시적으로 데이터베이스 상태의 일관성이 없어짐
- 해소 방안으로 관계를 분해함
- 어떻게 분해할지는 제2 정규형 이후의 정규형에서 다룸
제2 정규형: 정보 무손실 분해와 함수 종속성
함수 종속성 (Functional Dependency: FD)
- 다음 조건을 만족할 때 함수 종속성 A → B가 존재함
(∀𝑡, 𝑡′ ∈ 𝑅 | 𝑡[𝐴] = 𝑡′[𝐴] ⇒ 𝑡[𝐵] = 𝑡′[𝐵])
- 두 튜플 간에 속성값 A가 같을 때는, 속성값 B도 같음
- A와 B는 여러 개의 속성 집합일 수 있음
A = A1 A2 … An
B = B1 B2 … Bm
- 자명한 함수 종속성
- B가 A의 부분집합이거나 공집합인 경우
완전함수종속성
- 완전 종속성
A → B
에서, A의 임의의 진부분집합A′ (A′ ⊂ A)
에 대해A′ → B
가 성립하지 않을 때, B는 A에 완전 함수 종속되어 있다고 함
제2 정규형(Second Normal Form: 2NF)
- R이 제2 정규형이라는 것은 다음 조건을 만족하는 경우를 말함
- R은 제1 정규형임
- R의 모든 비키(非キー) 속성이 R의 각 후보 키에 완전 함수 종속되어 있음
- 아래의 관계는 제2 정규형이 아님
- 상품번호 → 상품명이 존재함
- 상품번호는 기본 키의 진부분집합임
- R이 제2 정규형이라는 것은 다음 조건을 만족하는 경우임
- R은 제1 정규형임
- R의 모든 비키 속성은 R의 각 후보 키에 완전 함수 종속되어 있음
제2 정규형의 작성
- 제1 정규형에서 제2 정규형으로 전환할 수 있었지만, 갱신 시 이상이 모두 해소되지는 않음
- 제조원의 수정, 신입 사원(담당 지역과 판매원)의 등록 등
제3 정규형: 추이적 함수 종속성 (推移的関数従属性)
추이적 함수 종속성
- 함수 종속성
X → Y
와Y → Z
가 성립한다면,X → Z
를 도출할 수 있음- 상품번호 → 제조국
제3 정규형 (Third Normal Form: 3NF)
- R이 제3 정규형이라는 것은 다음 조건을 만족하는 경우임
- R은 제2 정규형임
- R의 모든 비키 속성은 R의 어떤 후보 키에도 추이적으로 함수 종속되지 않음
제3 정규형의 작성
- 제2 정규형에서 제3 정규형으로 전환할 수 있었지만, 갱신 시 이상이 모두 해소되지는 않음
- 신입 사원의 (담당 지역과 판매원) 등록, 사원이 퇴직했을 때
보이스-코드 정규형
3NF로는 충분하지 않음
- 갱신 시 이상이 여전히 발생할 수 있음
- 새로운 담당 지역과 판매원을 삽입해도, 상품 번호가 NULL이 되어버림
- 상품 번호를 삭제하면 유일하게 존재하는 판매원 정보도 함께 삭제됨
- 갱신의 경우에도 동일한 문제 발생 가능성 있음
보이스-코드 정규형 (Boyce-Codd Normal Form: BCNF)
- R이 BCNF라는 것은
X → Y
가 R의 함수 종속성일 때, 다음 중 하나를 만족하는 경우를 의미함X → Y
가 자명한 함수 종속성일 경우 (즉,Y ⊆ X
)- X가 R의 슈퍼 키일 경우
- 즉, 키 후보의 부분집합으로부터의 종속성이 없으며, 추이적 종속성도 아님
BCNF의 작성
- BCNF로 괜찮은가?
- 일단 지금의 예시에서는 괜찮음