RDBMS 정규화

W·2024년 1월 17일
0

MSSQL

목록 보기
27/33

Ref.
[SQL] 정규화의 개념

정의

관계형 데이터베이스(RDBMS)의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스.

데이터를 정규화하지 않으면 쿼리의 성능이 저하된다.

정규화의 종류에는 1NF(1정규화), 2NF, 3NF, BCNF(보이스-코드 정규화), 4NF, 5NF, (6NF)가 있다.

비공식적으로 3NF면 정규화되었다고 한다.

종류

  1. 1NF (1정규형)
  2. 2NF (2정규형)
  3. 3NF (3정규형)
  4. BCNF (Boyce and Codd Normal Form)
  5. 4NF (4정규형)
  6. 5NF (5정규형)
  7. 6NF (6정규형)

비공식적으로 3NF면 정규화되었다고 한다.

1정규형

  • 도메인(각 컬럼)은 원자값(하나의 값)을 가져야 한다.

사용내역(컬럼)에 거래번호, 일자 ,잔고가 원자값을 가지지 않는다.

이는 1정규화로 처리해준다.

2정규형

  • 1정규형을 만족해야 한다.
  • 부분함수 종속을 제거해야 한다.

학과장은 소속학과에 포함되어있는 내용이다. ( 소속학과의 대장이 학과장이기 때문이다 )

위와 같은 경우를 부분함수 종속이라고 표현한다.

이를 2정규화를 통해 제거하여 처리해준다.

3정규형

  • 2정규형을 만족해야한다.
  • 이행함수종속을 제거해야 한다.

A → B 이고 B → C 일때 A → C인 관계를 이행함수종속 이라고 한다.

예를들어 홍길동 → 컴퓨터과 이고 컴퓨터과 → 공대일때 홍길동 → 공대 의 관계가 성립한다.

이때 3정규화를 통한 소속대학의 분리로 처리해준다.

BCNF

  • 3정규형을 만족해야한다.
  • 결정자이면서 후보키가 아닌 것을 제거해야 한다. ( 모든 결정자가 후보키 집합에 존재해야 한다 )
    • 후보키 : 슈퍼키에서 레코드를 유일하게 식별하는데 있어서 필요없는 속성을 제거한 슈퍼키의 부분집합. 예를 들어 사람 테이블에서 슈퍼키는 (보이는 데이터가 전부라고 할 때) {학번} 또는 {주민번호}, {이름, 나이} 등이 있다.하나의 레코드를 식별할 수만 있으면 된다. 하지만 후보키는 개수를 최소한으로 한 것이다. 예를 들어 {학번} 또는 {주민번호} 가 개수가 제일 작으므로 후보키가 될 수 있다. 이때, 후보키 중에서 최소성과 유일성을 만족하는 키를 하나만 고르면 그게 기본키(primary key)가 된다. 학번을 선택한다면, 학번에 PK가 된다. 후보키중에서 PK를 정하고 남은 키들은 대체키(Candidate key)라고 부른다. 주민번호가 그 예이다.
    • 결정자 : 결정자는 A에 의해 B가 결정될때 A를 결정자라고 부른다. 위의 사람 테이블에서 주민번호는 이름을 결정하기때문에 주민번호는 이름의 결정자이다.

profile
타협하는 순간 발전이 없어

0개의 댓글