[DB] Normalization

박세건·2024년 3월 12일
0

CS 학습

목록 보기
5/23

Key

  • 무엇을 식별할 수 있는 식별자
  • DB에서는 다른 행과 구별할 수 있는 조건이 되는 속성의 집합

Super Key(슈퍼 키)

  • 특정 행을 찾아 낼 수 있는 Key(유일성)
    • 유일성 : 특정 행을 바로 찾아낼 수 있는 속성
      예시) 학생을 기준으로 학번,주민등록번호와 (학번,주민등록번호) 도 슈퍼키가 될 수 있다

Candidate Key(후보 키)

  • 특정 행을 찾아 낼 수 있는 최소한의 Key(유일성, 최소성)
    • 최소성 : 최소한의 속성의 집합을 갖는 속성
  • 유일성과 최소성을 만족해야함
    예시) 학생을 기준으로 학번, 주민등록번호는 후보키가 될 수 있지만 (학번, 주민등록번호)는 학번으로도 찾을 수 있기때문에 후보키가 될 수 없다(최소성을 지키지 못함)
    물론, 역러개의 다른 컬럼들로 유일성을 만족시켰다 해도 학번과 주민등록번호로 유일성을 지킬 수 있기에 최소성을 지키지 못한다 -> 후보키가될 수 없다

Primary Key(기본 키)

  • 후보키들 중 하나
  • 테이블당 1개만 선택 가능
  • Null일 수 없고, 중복 불가

Alternate Key(대체 키)

  • 후보키들 중 기본키가 되지 못한 후보키

Foreign Key(외래 키)

  • 다른 테이블의 데이터를 참조하는 키
  • 존재하지 않는 값을 참조할 수 없도록 하는 제약설정
  • 참조하는 부모의 키는 기본 키이어야 한다
  • 외래키가 설정되었다면 부모는 자식보다 먼저 삭제될 수 없다.

정규화

  • 이상현상을 방지하기 위한 설계 과정
  • 이상현상이 존재하는 테이블을 분리한다.
  • 중복을 제거하고 데이터의 일관성과 정확성(데이터 무결성) 유지 가능

이상현상(Anomaly) : DB의 일관성이 없거나 잘못된 데이터가 밟생하는 현상

  • 삽입 이상 : 의도되지 않은 데이터들이 삽입
  • 삭제 이상 : 의도되지 않은 데이터들이 삭제
  • 갱신 이상 : 일부만 갱신되는 이상현상

단점

  • Join 연산이 증가하게된다(연관관계가 많아지기 때문)

1차 정규화

  • 각 컬럼이 원자값(하나의 데이터)를 갖도록 분리

분리 후

2차 정규화

  • 1정규화를 거친 후 부분 함수 종속을 제거
    • 부분 함수 종속 : 기본키 외에 다른 키에 의해 정해지거나(종속) 기본 키를 구성하는 속성들의 부분집합으로 종속되는 경우
  • 완전 함수 종속이 되도록 테이블을 분해
    • 완전 함수 종속 : 오직 기본키에 의해서만 종속
  • 중복을 제거

분리 후

3차 정규화

  • 2정규화를 거친후 이행적 종속을 제거
    • 이행적 종속 : A->B 이고 B->C 이라면 A->C 의 종속을 갖는 것
  • 모든 컬럼이 기본키에만 직접적으로 종속되어야함
  • ex) 고객번호로 등급을 정하는데 등급이 할인율을 결정한다면 분해

분리 후

BCNF(boyce-codd normal form)

  • 3정규화를 거친후 모든 결정자가 후보키가 되도록 분해
  • 특정 컬럼을 결정할 수 있는 결정자가 후보키가 될 수 없는 경우에 분해
    ex) 학번, 담당교수 는 후보키로 지정할 수 있는 경우 담당교수 하나의 키가 과목명이라는 컬럼을 결정할 수 있다면 문제 발생 -> 담당교수는 결정자 이지만 후보키가 될 수 없다.

분리 후

BCNF까지의 정규화를 표준으로 하고있다. 그 이상 정규화를 하면 정규화의 단점이 나타날 수도 있기 때문이다.

추가적인 정규화 정보

4차 정규화

주요 특징

  • 다치 종속 제거

5차 정규화

주요 특징

  • 조인 종속 제거
profile
멋있는 사람 - 일단 하자

0개의 댓글

관련 채용 정보