매일메일

데이터베이스 정규화

종식당 2025. 5. 22. 12:53
728x90
반응형

데이터베이스에서 정규화는 테이블을 정리하여 중복 데이터를 최소화하고, 데이터 무결성을 보장하는 과정을 의미한다. 이를 통해 데이터 저장 용량을 줄이고, 삽입 갱신 삭제 이상 현상을 해결할 수 있다. 정규화는 여러 단계가 존재하며, 대표적으로 1 정규화, 2 정규화, 3 정규화, BCNF가 있다.

각 정규화 단계를 설명해주세요. 🤔

  • 1 정규화는 테이블 칼럼의 값이 원자값을 가지도록 정리하는 것을 의미한다.
  • 2 정규화는 1 정규화를 진행한 테이블에서 완전 함수 종속을 만족할 수 있도록 테이블을 분해하는 것이다.
    쉽게 표현하자면, 기본 키의 일부에만 종속된 속성이 없도록 분해하는 것을 의미한다. A속성을 통해서 B속성의 값이 유일하게 정해지는 관계에서 A를 결정자라고 한다.
    가령, 사용자 ID가 기본 키이며 값이 1이다. 그리고, 사용자 ID 1번에 대응되는 유일한 이름 속성 값이 B라고 했을 때, 이름 속성의 결정자는 사용자 ID이다. 2NF를 만족하기 위해서는 기본키의 부분 집합이 결정자가 될 수 없다.
  • 3 정규화는 2 정규화를 진행한 테이블에서 이행적 종속을 제거하기 위해 테이블을 분해하는 것을 의미한다. A가 B를 결정하고, B가 C를 결정하는 경우에는 A가 C의 결정자가 된다. 이를 이행적 종속이라고 한다. 3NF를 만족하기 위해서는 이행적 종속이 제거되도록 테이블을 분리해야 한다.
  • BCNF정규화는 3정규화를 진행한 테이블의 모든 결정자가 반드시 후보키가 될 수 있도록 분해하는 것을 의미한다. BCNF를 만족하기 위해서는 후보키가 아닌 결정자가 존재하지 않도록 테이블을 분리해야 한다.

역정규화에 대해서 알고 계신가요? 🤓

역정규화는 정규화된 데이터베이스에서 쓰기 성능을 희생하고 읽기 성능을 향상하기 위해 사용되는 전략이다. 예를 들어, 전체 게시글의 수나 좋아요의 수를 계산해 특정 칼럼에 저장해서 읽기 성능을 향상 시킬 수 있다. 역정규화된 데이터베이스에서는 데이터의 중복을 허용하기 때문에 데이터의 일관성을 맞추기 위한 추가적인 작업이 필요하다.

728x90
반응형