Database #정규화

곽서현·2022년 11월 6일
0

목적

  • 데이터의 중복을 없애면서 불필요한 데이터를 최소화시킨다.
  • 무결성을 지키고, 이상 현상을 방지한다.
  • 테이블 구성을 논리적이고 직관적으로 할 수 있다.
  • 데이터베이스 구조를 확장에 용이해진다.

📍제 1정규화(1NF)

  • 테이블 컬럼이 원자값(하나의 값)을 갖도록 테이블을 분리시키는 것을 말한다.
  • 기본키를 사용하여 관련 데이터의 각 집합을 고유하게 식별할 수 있어야 한다

📍제 2정규화(2NF)

  • 테이블의 모든 컬럼이 완전 함수적 종속을 만족해야 한다.(부분적 함수 종속 제거)
    - 테이블에서 기본키가 복합키(키1, 키2)로 묶여있을 때, 두 키 중 하나의 키만으로 다른 컬럼을 결정지을 수 있으면 안된다. (= 기본키의 부분집합 키가 결정자가 되어선 안된다는 것)

📍제 3정규화(3NF)

  • 2NF가 진행된 테이블에서 이행적 종속을 없애기 위해 테이블을 분리하는 것이다.
    ** 이행적 종속 : A → B, B → C면 A → C가 성립된다.

📍BCNF 정규화

  • 모든 결정자가 후보키 집합에 속해야 한다.
  • 일반컬럼이 후보키를 결정하는 경우, 테이블을 분리함

정규화의 단점

릴레이션의 분해로 인해 릴레이션 간의 연산(JOIN 연산)이 많아진다. 이로 인해 질의에 대한 응답 시간이 느려질 수 있다. 조금 덧붙이자면, 정규화를 수행한다는 것은 데이터를 결정하는 결정자에 의해 함수적 종속을 가지고 있는 일반 속성을 의존자로 하여 입력/수정/삭제 이상을 제거하는 것이다. 데이터의 중복 속성을 제거하고 결정자에 의해 동일한 의미의 일반 속성이 하나의 테이블로 집약되므로 한 테이블의 데이터 용량이 최소화되는 효과가 있다. 따라서 정규화된 테이블은 데이터를 처리할 때 속도가 빨라질 수도 있고 느려질 수도 있는 특성이 있다.

역정규화

  • 조회를 하는 SQL 문장에서 조인이 많이 발생하여 이로 인한 성능저하가 나타나는 경우에 반정규화를 적용하는 전략이 필요하다.

[ 주의할 점 ]

  • 반정규화를 과도하게 적용하다 보면 데이터의 무결성이 깨질 수 있다.
  • 또한 입력, 수정, 삭제의 질의문에 대한 응답 시간이 늦어질 수 있다.

0개의 댓글