데이터베이스 Functional Dependency

Alpha, Orderly·2023년 11월 23일
0

데이터베이스

목록 보기
11/13
post-thumbnail

Functional Dependency

  • DB의 두 속성 집합간 존재하는 제약조건
    • 속성의 의미와 관계에서 파생된다.
  • 좋은 데이터베이스를 측정하기 위해 사용되며, Key가 Normal form 을 정의하기 위해 사용된다.
    • Key가 같은 다른 두 튜플이 존재할수 없다.
  • 속성의 의미를 통해 이를 PK의 형태로 명시적 표기 해야 한다.
  • FD Constraints 는 모든 Relation에 전부 적용된다.

설명

  • X 속성집합이 다른 속성집합 Y의 값을 유니크하게 결정할수 있다.
  • 즉 X 속성집합은 Relation의 Key로 사용되어 튜플의 Uniqueness를 지킬수 있다.
  • X 속성이 같으면 반드시 Y속성의 값이 같아야 한다.
  • Y 속성이 같다고 X 속성이 같을 필요는 없다.

데이터 예시

  • SSN이 이름을 정의할수 있다.
    • SSN이 같으면 이름도 같아야 한다.
    • 이름이 같다고 SSN이 같을 필요는 없다.
  • 과제번호가 과제 이름을 정의할수 있다.
  • SSN과 직원번호를 통해 업무시간을 정의할수 있다.


Normalization / 정규화

  • Relation을 취하고 그 Relation이 특정 정상적인 형태를 만족시키는지 확인하기 위해 일련의 테스트를 거칩니다.
    • 불량한 Relation들의 속성을 쪼개 작은 Relation 들을 만든다.
    • 위 테스트를 정상적으로 거친 Relation을 Noral Form ( 정규형 ) 으로 부른다.
    • 중복 최소화, 갱신이상 최소화를 위해 필요하다.

Denomalization

  • JOIN으로 정규화를 역행하는것
  • 뷰를 사용하는 이유와 동일하다.

Normal Form

  • key와 functional dependency를 이용해 relation schema가 특정 normal form인지를 증명할수 있다.
  • 반드시 최대 레벨까지 정규화 할 필요는 없다.

Level of normal form

  • 1NF, 2NF, 3NF, and Boyce-Codd NF (BCNF)
    • Relation schema의 FD와 Key와 연관되어 있다.
  • 4NF: 키에 기반, 다중값 의존 (MVDs)
  • 5NF: 키에 기반, 조인에 의존 (JDs)

1NF - First Normal Form

  • 단순/평면 Relation model
  • 최소한의 정규화 과정
  • 복합 값, 다중 값, Nestred Relation 등을 포함하지 않는다.
  • 대부분의 DBMS는 Relation을 1NF로 정의해야 한다.

Multi Value 를 다루는 방법

  • Multivalue를 가지는 Attribute를 다른 Relation을 만들어 빼낸다.
    • 최선책
  • 단일 튜플들로 쪼개어 PK에 그 속성을 추가한다.
    • 비추천
  • m개의 종류가 있을 경우, 각각의 종류를 하나의 속성에 매칭시킨다.
    • EX. 3개의 주소가 있을경우 주소1, 주소2, 주소3 속성을 만든다.
    • 비추천

Nested Relation

  • Nested된 부분을 다른 Relation으로 빼서 저장한다.
  • 기존 테이블과는 PK - FK 쌍으로 연결한다.

PRIME / NONPRIME ATTRIBUTE

  • Relation이 하나 이상의 슈퍼키를 가진다면, 각각은 Candidate key로 불린다.
  • 제일 작은 슈퍼키가 키로서 사용된다.
    • PK : Candidate Key 중 하나를 선택
    • Secondary Key : 또 다른 Candidate Key

Prime Attribute

  • Candidate Key에 반드시 포함이 되어야 하는것

Nonprime Attribute

  • prime attribute 가 아닌것

2NF - Second Normal Form

  • X가 Y를 결정하는 Relation에서 X에서 속성 하나를 제외하면 더이상 DF가 성립하지 않는다.
    • full functional dependency
    • 위가 아닌 경우는 Partial dependency
  • 기본키가 아닌 모든 속성 Y가 기본키 X에 대해 Full Functional Dependency 하면 된다.
  • 즉, 기본키중에 특정 속성에만 종속된 속성(부분적 종속)이 없어야 한다는 것이다.
  • 여기서 X는 Candidate Key를 포함한다!

예시

  • Fully Functional Dependency한 것들을 찾아서 여러 테이블로 분리한다.

3NF

이행적 함수 종속 - Transitive Functional Dependency

  • 속성 X, Y, Z에 대해 X -> Y 와 Y -> Z FD가 성립하면 X -> Z의 FD가 성립되는 경우
  • 위 경우 [X, Y] 와 [Y, Z] 의 두 Relation으로 분해한다.
  • Key가 아닌 값들끼리 FD가 성립하면 이를 찾아본다.
  • Key가 아닌 속성 X와 Key에 속하는 속성 Y가 X -> Y를 성립하는건 3NF를 위반하진 않는다.

예시

  • 학번 -> 학부 와 학부 -> 등록금 과 학번 -> 등록금 FD가 성립한다.

  • 그래서 둘로 쪼갠다.

  • Dnumber는 PK가 아닌데 FD를 성립한다.
  • 따로 제외한다.

BCNF

  • 3NF를 만족하면서 모든 결정자가 Candidate Key 집합에 속한 정규형
  • A 속성이 결정자이나 Candidate key가 아닌경우, 해당하는 A 속성을 다른 테이블로 분리해 해결할수 있다.

결정자

  • A 속성이 결정되면 B 속성이 자동으로 결정될수 있을때, A 속성을 결정자라고 한다.
  • 결정자이나 Candidate Key가 아닌 Area를 다른 테이블로 분리한다.

간소화된 예시


Normal Form의 General Definition

  • Tax_rate은 Property_id와 Lot과는 Full FD가 성립하지 않는다.
  • 그래서 이 둘을 따로 뺀다.

  • Key가 아닌 Area 가 Price에 FD가 성립한다.
  • 그래서 이것도 따로 뺀다.

  • 전반적인 형태

3NF

  • X가 Relation 의 Super Key이고, A가 R의 Prime attribute이면서 X -> A가 성립할때 생기는 문제
  1. Prime Attribute가 FD에서 Non-prime Attribute이 된다.
    • 2NF 위반
  2. 다른 Non-prime Attribute와 Non-prime Attribute가 FD를 성립한다.
    • 3NF 위반

3NF의 다른 정의

  • 모든 Relation의 Non-prime Attribute에 대해 모든 PK와 Fully FD가 성립하고, 모든 Candidate key와 non-transitively dependent 하다.
  • 3NF를 만족하면 자동으로 2NF가 만족된다.
profile
만능 컴덕후 겸 번지 팬

0개의 댓글