[데이터베이스] #14 데이터베이스 설계 이론

2024. 6. 12. 09:57·전공/데이터베이스
728x90
반응형

목차

  1. 좋은 스키마와 나쁜 스키마
  2. 함수 종속성 이론
  3. 정규형
  4. 분해 및 설계

 


1. 좋은 스키마와 나쁜 스키마

1. 나쁜 스키마

세 가지 이상(anomaly)을 가짐

  • 갱신 이상
  • 삭제 이상
  • 입력 이상

나쁜 스키마 예)

mybadtable1(cID, title, deptName, credit, chairman, bulding, budget)

→ 두 관계 “course”와 “department”가 결합되어 있음

2. 함수 종속성

함수 종속성은 일부 속성의 값이 다른 속성의 값을 유일하게 결정하는 것을 의미

A B

A B
1 4
1 4
2 4
3 5

동일한 A값에 대해 항상 동일한 B값

A는 B를 함수적으로 결정

B는 A를 함수적으로 결정하지 않음

슈퍼 키는 관계 속성의 일부분으로서 전체 속성을 함수적으로 결정하는 속성

슈퍼 키는 유일하기 때문

함수 종속성은 두 가지 방식으로 사용 가능

  • 관계 인스턴스의 유효성 검사
  • 적법한 테이블의 제약 조건을 명시하는 데 함수 종속성 사용 가능

2. 함수 종속성 이론

1. 무의미(trivial) 함수 종속성

함수 종속성이 테이블의 모든 인스턴스에 대하여 만족하면 무의미함

2. 함수 종속성 폐포(closure)

A→B

B→C일 때,

A→C를 유추 가능

폐포를 직접 구하여 사용하지 않음

3. 암스트롱 공리

새로운 함수 종속성을 유추할 수 있는 추론 규칙

세 가지 추론 규칙으로 구성

  1. 재귀성 규칙: 무의미한 함수 종속성 생성하게 됨
  2. 부가성 규칙: 주어진 함수 종속성에 동일한 속성을 양쪽에 추가하여도 됨 AG→CG
  3. A→C일 때,
  4. 이행성 규칙: 추론의 이행성을 설명 B→H일 때,
  5. A→H
  6. A→B

암스트롱 공리는 항상 건전함, 완전함

4. 속성 폐포

주어진 속성이 함수적으로 결정할 수 있는 모든 속성을 속성 폐포라고 함

R = {A, B, C, G, H, I}

F = {A→B, A→C, CG→H, CG→I, B→H}

여기서 AG는 후보 키

  • AG가 모든 속성을 결정함
  • AG의 부분 집합 A 또는 G는은 슈퍼 키 조건을 만족하지 않음
  • AG의 폐포는 ABCGHI

5. 속성 폐포 사용

  • 속성 폐포가 주어진 테이블의 전체 속성을 가지게 되면 그 속성은 슈퍼 키
  • 함수 종속성이 유효한지 검증
  • 속성 a의 폐포에 b가 속하게 되면 a→b는 유효한 함수 종속성

6. 정규 커버

동일한 내용(함수 종속성 폐포)을 표현하는 가장 적은 속성 및 함수 종속성의 집합

3. 정규형

1. 정규화형

  • 제1 정규형
  • 제2 정규형
  • 제3 정규형
  • BCNF
  • 제4 정규형
  • 제5 정규형

제1,2,3 정규형 및 BCNF → 함수 종속성으로 정의

제4 정규형 → 다치 종속성으로 정의

실질적으로 제3 정규형 및 BCNF만 사용

2. 제1 정규형

속성 값으로 원자 값만을 허용

집합, 리스트, 복합 속성 등 사용 x

3. 다양한 함수 종속성

임의의 후보 키에 속하는 속성은 주요 속성

다수 개의 후보 키가 존재하더라도 후보 키에 속하면 주요 속성임

a→b에서 a의 부분집합 r에 대하여 r→b이 성립하지 않으면 a→b는 완전 함수 종속성

b는 a 전체에 대하여 의존적인 함수 종속성임

r→b이 성립한다면 부분 함수 종속성

a→b, b→c일 때, a는 c를 이행적으로 결정

또는 c는 a에 이행적으로 의존적이라고 함

4. 제2 정규형

제1 정규형 중에서 모든 비주요 속성이 모든 후보키에 완전 의존적이어야 함

5. 제3 정규형

제2 정규형 중에서 모든 비주요 속성이 모든 후보키에 이행적으로 의존적이 아니면 제3 정규형

모든 의미 있는 함수 종속성 “a→b”에서 a가 슈퍼 키이거나 또는 b가 주요 속성이어야 함

 

6. BCNF

관계형 스키마가 모든 의미 있는 함수 종속성 a→b에서 a가 슈퍼 키이면 BCNF 정규형이 됨

속성이 두 개인 테이블은 모두가 BCNF임

7. 정규화 관계도

실세계에서는 제3 정규형과 BCNF 정규형을 사용하는 것을 권장

 

4. 분해 및 설계

1. 정규화 분포

R은 주어진 관계형 스키마

F는 주어진 함수 종속성의 집합

  1. 주어진 R이 좋은 스키마인지 결정
  2. 주어진 스키마가 좋은 스키마가 아니면 스키마 분해 연산
  3. 분해 과정은 무손실 조인 분해이어야 함

2. 무손실 조인 분해

  • 손실 조인 분해는 스키마를 투영 연산으로 분해 후 natural join 했을 때 원 테이블에 없는 새로운 터플(spurious tuples)이 생김
  • 무손실 조인 분해를 만족하기 위해서는 분해된 테이블의 공통 속성이 분해된 테이블 중 적어도 하나에서 주 키여야 함

3. BCNF 시험

각 함수 종속성에 대하여 슈퍼 키 여부를 확인해야 함

4. BCNF와 제3 정규형 비교

가능하면 BCNF 사용을 권장

다만 함수 종속성 보존이 중요한 응용에서는 제3정규형 권장

728x90
반응형

'전공 > 데이터베이스' 카테고리의 다른 글

[데이터베이스] #13 개체-관계성 데이터 모델  (0) 2024.06.12
[데이터베이스] #12 SQL 확장  (0) 2024.05.20
[데이터베이스] #11 응용 개발  (0) 2024.05.20
[데이터베이스] #10 오라클 실습 II  (0) 2024.05.20
[데이터베이스] #9 데이터베이스 주요 기능  (0) 2024.05.20
'전공/데이터베이스' 카테고리의 다른 글
  • [데이터베이스] #13 개체-관계성 데이터 모델
  • [데이터베이스] #12 SQL 확장
  • [데이터베이스] #11 응용 개발
  • [데이터베이스] #10 오라클 실습 II
dev_ares
dev_ares
대학에서 컴퓨터공학을 전공하고 있는 학생입니다.
    반응형
    250x250
  • dev_ares
    노트
    dev_ares
  • 전체
    오늘
    어제
    • 분류 전체보기 (188)
      • IT 트랜드 (2)
      • 백엔드 (18)
        • Java + Spring (8)
        • Kotlin + Spring (5)
        • 백엔드 (5)
      • 프론트엔드 (1)
        • React (1)
      • 대외활동 (17)
        • 42서울 (17)
      • 백준 (6)
        • Java (2)
        • C++ (3)
      • 전공 (121)
        • 객체지향프로그래밍 (17)
        • 자료구조 (23)
        • 리눅스시스템관리 (16)
        • 컴퓨터구조 (25)
        • 네트워크 (25)
        • 데이터베이스 (15)
        • 기타 전공 (0)
      • 프로그래밍 언어 (18)
        • Java (5)
        • Swift (4)
        • C++ (1)
        • Kotlin (8)
      • 기타 (4)
      • 공군 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    컴퓨터 구조 및 설계
    자바
    반복자
    사설 문제
    C++
    상속
    메모리 계층 구조
    리눅스
    컴퓨터구조
    컴공 포트폴리오
    백준
    데이터패스
    추가 문제
    티스토리챌린지
    자료구조
    단일 사이클
    오블완
    코틀린
    명령어
    42서울
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
dev_ares
[데이터베이스] #14 데이터베이스 설계 이론
상단으로

티스토리툴바