Normalization [Database]

SnowCat·2023년 8월 1일
0

CS - Database

목록 보기
6/10
post-thumbnail

Functional dependency

  • 데이터베이스에서 임의의 두 튜플이 있을 때 한 튜플값에 따라 다른 튜플값을이 유일하게 결정되는 경우가 생길 수 있음
  • X 튜플의 값에 따라 Y튜플의 값이 결정되는 경우를 X가 Y에 함수적으로 결정한다고 할 수 있으며, 이러한 두 집합 사이의 제한 관계를 functional dependency라 함
  • X에 따라 Y가 결정되는 FD를 기호로는 X -> Y 식으로 표현하며, 이 때 X는 left-hand side, Y는 right-hand side라 부름
  • X -> Y라 해서 Y -> X가 반드시 되지는 않음에 주의
  • {} -> Y와 같이 표기된 경우 Y 튜플이 반드시 하나의 값만을 가짐을 의미함
  • functional dependency를 결정할 때는 테이블의 특정 순간의 상태만을 보고 판단해서는 안되며, 스키마를 확인해 의미적으로 FD가 존재하는지 확인해야 함
  • 만약 X -> Y에서 Y가 X의 부분집합이면 X -> Y는 trival functional dependency라 하며, 부분집합이 아니면 X -> Y는 non-trival functional dependency라 함
    겹치는 값이 아예 없으면 completely non-trival functional dependency라 함
  • X -> Y에서 X를 제외한 X의 임의의 부분집합 만으로 Y값을 결정할 수 있다면 X -> Y는 partical FD라고 부름
  • 반대로 X를 제외한 X의 어떠한 부분집합으로도 Y값을 결정할 수 없다면 X -> Y는 full FD라고 부름

DB Normalization

  • DB Normalization은 데이터 중복과 삽입, 업데이트 삭제의 anomaly를 방지하기 위해 일련의 normal forms에 따라 RDB를 구성하는 과정을 의미함
    normalization form은 정규화를 위해 준수해야 하는 규칙을 의미함
  • 순차적으로 normal form을 만족하는지를 확인하며, 이를 만족하지 못하면 만족하도록 테이블 구조를 조정하며 DB를 정규화하게 됨
  • normal form의 순서는 1NF, 2NF, 3NF, BCNF, 4NF, 5NF, 6NF의 순서를 가짐
  • BCNF까지는 Functional dependency와 key만으로 정의되는 normal forms이며, 실무에서는 3NF, BCNF까지만 진행을 하게 됨
  • 1NF는 attribute의 값은 반드시 나뉘어질 수 없는 단일한 값이어야 함을 의미함
    가령 계좌정보를 저장하는 테이블에서 카드 번호가 2개이상 있다면 카드 번호 하나당 튜플을 따로 분리해줘야 함
  • 2NF는 모든 non-prime attribute가 모든 key에 완전히 functionally depent해야 함을 의미함
    앞서 분리한 카드 정보를 저장한 attribute로 인해 2NF을 위반하게 됨으로 card 정보를 테이블에서 분리해줘야 함
  • 3NF는 모든 non-prime attribute는 어떤 key에도 transitively dependent해서는 안된다는 것을 의미함
    X -> Y, Y -> Z일 때, Y나 Z가 임의 키의 부분집합이 아닌이상 X -> Z의 FD 관계를 transtive FD라 함
  • BCNF는 모든 유효한 X -> Y에서 X가 Y의 부분집합이 아니고(non trival FD) X가 super key여야 함을 의미함
    super key는 테이블에서 튜블을 unique하게 식별할 수 있는 attribute 집합을 의미함

출처:
https://www.youtube.com/watch?v=JwfQ8ouhAzA&list=PLcXyemr8ZeoREWGhhZi5FZs6cvymjIBVe&index=21
https://www.youtube.com/watch?v=JwfQ8ouhAzA&list=PLcXyemr8ZeoREWGhhZi5FZs6cvymjIBVe&index=22
https://www.youtube.com/watch?v=JwfQ8ouhAzA&list=PLcXyemr8ZeoREWGhhZi5FZs6cvymjIBVe&index=23
https://www.youtube.com/watch?v=JwfQ8ouhAzA&list=PLcXyemr8ZeoREWGhhZi5FZs6cvymjIBVe&index=24

profile
냐아아아아아아아아앙

0개의 댓글

Powered by GraphCDN, the GraphQL CDN