3 minute read


복습: 전 회차의 연습문제

• 자연어에 의한 질의  
	• 상품 분류가 스마트폰에 속하며, 제조사가 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 정규형이라는 것은 다음 조건을 만족하는 경우를 말함
    1. R은 제1 정규형임
    2. R의 모든 비키(非キー) 속성이 R의 각 후보 키에 완전 함수 종속되어 있음
  • 아래의 관계는 제2 정규형이 아님
    • 상품번호 → 상품명이 존재함
    • 상품번호는 기본 키의 진부분집합임


  • R이 제2 정규형이라는 것은 다음 조건을 만족하는 경우임
    • R은 제1 정규형임
    • R의 모든 비키 속성은 R의 각 후보 키에 완전 함수 종속되어 있음


제2 정규형의 작성

  • 제1 정규형에서 제2 정규형으로 전환할 수 있었지만, 갱신 시 이상이 모두 해소되지는 않음
    • 제조원의 수정, 신입 사원(담당 지역과 판매원)의 등록 등


제3 정규형: 추이적 함수 종속성 (推移的関数従属性)

추이적 함수 종속성

  • 함수 종속성 X → YY → 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로 괜찮은가?
    • 일단 지금의 예시에서는 괜찮음


제4, 5 정규형: 범위 외