Zayson
A to Zayson!
Zayson
전체 방문자
오늘
어제
  • 분류 전체보기 (132)
    • Computer Science (20)
      • Network (4)
      • DB (12)
      • OS (4)
    • Algorithm (32)
      • 완전탐색(Brute-Force) (3)
      • 그리디(Greedy) (6)
      • 투포인터(Two-Pointer) (1)
      • 그래프(Graph) (5)
      • BFS & DFS (9)
      • 구현, 시뮬레이션(Implementation) (5)
      • 다이나믹 프로그래밍(DP) (3)
    • Backend (51)
      • Spring Boot (19)
      • JPA (16)
      • Kafka (2)
      • Java (13)
      • Kotlin (1)
    • DevOps (1)
      • Jenkins (5)
      • Oracle Cloud Infrastructure (1)
      • Kubernetes & Docker (1)
    • Trouble Shooting (3)
      • JPA (1)
      • Spring Boot (2)
    • 회고 (5)
      • 엔빵 프로젝트 포스트 로드맵 (1)
      • 2022년 (4)
    • Kafka (7)
      • Kafka (5)
      • Kafka Connect (2)
    • 기술 서적 (6)
      • 데이터 중심 애플리케이션 설계 (3)
      • 개발자가 반드시 정복해야할 객체 지향과 디자인 패턴 (2)
      • 가상 면접 사례로 배우는 대규모 시스템 설계 기초 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

태그

  • 관계형 데이터베이스 실전 입문
  • 그리디
  • 나 혼자 스프링부트!
  • 백준
  • Java
  • BFS
  • kafka
  • JPA
  • 엔빵프로젝트
  • Backend
  • CS
  • spring boot
  • 라이브스터디
  • SpringBoot
  • Kafka Connect
  • 프로그래머스
  • dfs
  • 완전탐색
  • 구현
  • Computer science

최근 글

티스토리

hELLO · Designed By 정상우.
Zayson

A to Zayson!

정규화 이론(두번째) - 결합 종속성 (DB 스터디 3주차)
Computer Science/DB

정규화 이론(두번째) - 결합 종속성 (DB 스터디 3주차)

2022. 9. 28. 11:02
"관계형 데이터베이스 실전 입문 - 오쿠노 마키아"를 읽으며 매주 스터디 진행

4.1 결합 종속성 (JD)

  • BCNF를 통해 후보키, 키가 아닌 속성의 함수종속성을 제거했지만, 중복을 모두 제거한 것은 아니다.
☁️ 결합 종속성 (Join Dependency, JD)
→ 키 자체에 다중성이 포함됐을 때 나타나는 중복

[정의]
A, B, … C를 릴레이션 R의 제목의 부분집합이라고 할 때
A,B,C의 프로젝션에 대응하는 릴레이션을 결합한 결과 = 릴레이션 R 이면 “결합 종속성”이다.

[표현식]
☆{A, B, …, C}
  • A, B, C의 제목 중 하나가 R의 제목 전체와 같은 경우 “결합 종속성이 명백하다.”
  • 릴레이션 내에 명백하지 않은 결합 종속성이 존재하면 4NF ~ 6NF의 대상이다.
  • 결합 종속성은 프로젝션으로 나눈 릴레이션을 다시 결합하면 원래의 릴레이션으로 돌아가는 성질 → 무손실 분해 가능
  • 함수 종속성은 결합 종속성의 일종이다.

암시적인 결합 종속성

  • 암시적인 결합 종속성 : 슈퍼키로 분해할 수 있는 결합 종속성, 즉 공통의 후보키를 갖는 결합 종속성
  • 아래의 예는 {이름}을 후보키로 갖는 두 개의 릴레이션으로 나누어 튜플의 수가 같고 키가 아닌 속성만 다른 릴레이션을 두개 생성한 것 → 결합하면 원래의 릴레이션과 동일
  • ex) 분해 전
이름 나이 학년
맹준영 28 2
김민섭 28 2
백예린 26 1
손흥민 31 4
  • 두 개의 릴레이션으로 분해 후
이름 나이
맹준영 28
김민섭 28
백예린 26
손흥민 31

 

이름 학년
맹준영 2
김민섭 2
백예린 1
손흥민 4

키가 아닌 속성과 결합 종속성

  • 키가 아닌 속성이 존재하는 경우 후보키는 키가 아닌 속성을 결정할 수 있는 함수 종속성이 존재한다.
    • 프로젝션으로 후보키의 속성을 나누면 함수종속성이 사라지므로 무손실 분해가 불가능하다.
  • 4NF, 5NF 작업은 키가 아닌 속성이 존재하지 않는 릴레이션만 대상
  • 4NF, 5NF는 후보키에 여러 속성이 포함되는 복합키인 경우만 필요한 작업
☁️ BCNF가 바로 5NF까지 만족하는 경우

1. 키가 아닌 속성이 존재할 때
2. 키에 포함되는 속성이 1개뿐인 단일키일 때

키가 아닌 속성이 존재하는 경우 후보키를 무손실 분해할 수 있는 결합 종속성이 존재하지 않는가 ?
ex) R = {a,b,c,x}

if. 후보키 {a,b,c} → 키가 아닌 속성 {x} : 후보키를 통해 x를 결정
{a,b,c}를 분해하는 경우 x를 결정 못해 함수종속성이 사라짐 → 무손실 분해 불가능

if. {a,b,c} → {x}에서 {a,b} → {x}도 가능한 경우
후보키의 진부분집합 {a,b}가 {x}를 결정하는 부분 함수종속이 존재하므로 2NF 조건에 위배

if. {a, b} → {x} 인 경우 함수 종속성을 제거하기 위해 {a,b,c}, {a,b,x}의 두 릴레이션으로 무손실 분해 가능
{a,b,c} = 후보키이면서 키가 아닌 속성을 갖지 않으므로 정규화 대상 검토 필요

4.2 결합 종속성에 의한 정규화 (4NF ~ 6NF)

제 4 정규형 (4NF)

  • 다치 종속성 (MultiValued Dependency, MVD)에 의한 정규화
    • 표현식 : A→→ B, A→→C
    • ☆{AB, A
  • 다치 종속성 : 키가 아닌 속성을 갖지 않는 릴레이션을 결합 종속성에 의해 공통의 속성을 포함한 두 개의 릴레이션으로 무손실 분해할 수 있는 것

  • {이름, 학과}, {이름, 수업}으로 릴레이션을 무손실 분해 가능

제 5 정규형 (5NF)

  • 명백하지 않거나 암시적이지 않은 결합 종속성을 제거하는 것
    • 표현식 : A→→B, B→→C, C→→A
    • ☆{AB, BC, CA}
  • BCNF를 한 릴레이션에서 ☆{AB,AC}을 발견한 경우 ☆{AB, BC, CA}의 가능성도 확인하는 작업 필요

제 6 정규형 (6NF)

  • 릴레이션 자신을 포함한 결합 종속성만 남을때까지 모든 결합 종속성을 제외하는 상태
  • 키가 아닌 속성의 개수가 0개 또는 1개가 될때까지 무손실 분해한 상태
  • 불필요한 결합이 많아지며 실용적이지 않다.

4.3 요약

  • 함수 종속성은 결합 종속성의 일종
  • BCNF까지 도달한 릴레이션 = 후보키가 단일 속성으로 구성되어 있거나 키가 아닌 속성이 존재 하지 않는 경우 5NF를 만족
  • 5NF에 도달한 릴레이션 = 중복이 없다고 할 수 있다.
반응형
저작자표시 비영리 변경금지 (새창열림)

'Computer Science > DB' 카테고리의 다른 글

이력 데이터와 친해지기 (DB 스터디 4주차)  (0) 2022.10.21
SELECT를 공략하자 (DB 스터디 4주차)  (0) 2022.10.21
SQL과 관계형 모델 (정규화) (DB 스터디 3주차)  (0) 2022.09.28
술어논리와 관계형 모델 (DB 스터디 2주차)  (0) 2022.09.21
SQL과 관계형 모델 (DB 스터디 1주차)  (0) 2022.09.16
    'Computer Science/DB' 카테고리의 다른 글
    • 이력 데이터와 친해지기 (DB 스터디 4주차)
    • SELECT를 공략하자 (DB 스터디 4주차)
    • SQL과 관계형 모델 (정규화) (DB 스터디 3주차)
    • 술어논리와 관계형 모델 (DB 스터디 2주차)
    Zayson
    Zayson
    공부한 내용을 정리하는 공간

    티스토리툴바