DB 3. Relation normalization

skh951225·2023년 4월 4일
0

데이터베이스

목록 보기
3/7

데이터베이스 KOCW

Relation normalization

데이터의 중복

  • 데이터의 중복 : 저장공간의 낭비
  • update anomly 발생([사원,부서] relation을 예로 들어)
    • insertion anomaly
      • 불필요한 정보도 저장해야하는 문제
      • 부서를 추가하고 싶은데 해당 부서에 속하는 사원이 없으면 삽입 불가능
    • deletion anomaly
      • 유용한 정보를 삭제하지 않고선 삭제 불가능한 경우 발생
      • ex) 사원이 한명인 부서의 해당 사원이 퇴사하는 경우 부서정보가 날라감
    • modification anomaly
      • 수정을 하다가 문제가 생겨 일부만 수정하면 inconsistency 발생
  • 해결 : Relation decomposition

RDB 설계 유의사항

  1. 이해하기 쉽고 명확한 스키마로 분해할 것(하나의 entity - 하나의 relation)
  2. NULL값 피하기
  3. 가짜 튜플이 생기지 않도록 분해(종속관계를 제대로 파악하기)
  4. 스키마를 지속적으로 정제

Functional dependency

  • Full functional dependency : 전체 기본키를 조합해야 속성의 값을 특정할 수 있을때 그 관계를 Full FD
  • Partial functional dependency : 기본키의 일부에 의해 속성을 표현할 수 있을때 그 관계를 Partial FD
  • transitive functional dependency : 기본키가 아닌 속성들간의 종속성이 존재하는 것
  • Partial/Transitive FD 를 없애는 방향으로 decomposition
  • 하지만 Decomposition을 꼭 하는 것만이 좋은것은 아니다. decomposition을 하면 할수록 온전한 테이블을 얻기위해선 JOIN문을 많이 사용해야함. 그래서 Trade off 를 잘 고려해서 Denormalization도 적절히 수행하는 것이 중요

제 N정규형

  • 제 1정규형 : 모든 속성의 값이 atomic value(<=>repeating group eg. 집합)을 갖는다.
  • 제 2정규형 : 제 1정규형을 만족하면서 Partial FD를 제거한 형태
  • 제 3정규형 : 제 2정규형을 만족하면서 Transitive FD를 제거한 형태
  • BCNF : 제 3정규형을 만족하면서 후보키만이 Determinant인 형태

0개의 댓글