TIL)23.08.21_기술면접(RDBMS의 정규화)

주민·2023년 8월 21일
0

TIL

목록 보기
65/84

RDBMS의 정규화에 대해 설명해주세요.

RDBMS의 정규화
자료 손실이나 불필요한 정보의 도입 없이 데이터 일관성, 데이터 중복을 최소화하고 최대의 데이터 안정성 확보를 위한 안정적 자료 구조로 변환하기 위해서 하나의 테이블을 둘 이상으로 분리하는 작업이다.
정규화를 하는 이유는 이상 현상(삽입, 삭제, 갱신 이상)이 방지 하기 위함이다.

  • 이상 현상
    정규화를 적절히 하지 않은 DB 또는 Relation(Table)에 데이터가 중복되고 이 Table에 어떠한 작업을 할 때 비합리적인 문제들이 발생하는 현상
    -> 삽입 이상 :
구분내용
삽입이상없는 컬럼 데이터가 있는 경우에 데이터를 테이블에 저장할 때,
불필요한 데이터도 넣어야하는 경우
삭제이상A컬럼과 B컬럼이 별개의 데이터인데 한 열에 있어 데이터를 테이블에서 삭제할 때,
원하지 않는 데이터도 같이 삭제되는 경우
갱신이상A컬럼에 있는 B컬럼의 데이터를 수정할 때
기존에 B컬럼의 데이터가 없어지는 경우

정규화는 총 6단계가 있으며 상위 단계의 정규화는 하위 단계의 정규화를 만족하고 있다.

  • 제1정규화
    각 컬럼이 하나의 속성 만을 가져야 하기 때문에 모든 속성 값이 원자 값을 갖도록 분해
  • 제2정규화
    기본키가 아닌 속성이 기본키에 완전 함수 종속이도록 분해
    ※ 지도교수는 NO(학생번호)와는 직접적인 관련이 없고 과목에 종속되어 있는 컬럼이기 때문에 학생 정보 & 과목, 교수명으로 분해
  • 제3정규화
    기본키를 제외한 속성들 간의 이행 종속성 (Transitive Dependency)이 없어야 하기 때문에 기본키가 아닌 속성이 기본키에 직접 종속하도록 분해
    ※ 이행 종속성이란 A->B, B->C 일 때 A->C 가 성립하는 경우
    ex) ID -> 등급 -> 할인율
  • BCNF(보이스-코드 정규화)
    3.5 정규화라고도 부르며 후보키 집합에 없는 컬럼이 결정자가 되지 않도록 분해
    ※ 후보키 집합이 아닌 칼럼이 결정자가 되어버린 상황을 BCNF를 만족하지 않는다
    ※ 같은 과목이나 교수가 다른 경우가 있기 때문에 아래와 같이 분해
  • 제4정규화
    기본키 컬럼을 기준으로 데이터를 가지고 있는 경우 다치 종속이 발생할 수 있는데 다치 종속이 되지 않도록 분해
    ※ 같은 A컬럼에 B컬럼/C컬럼이 여러개 있는 경우, B컬럼/C컬럼은 독립적이느 관계이다.
  • 제5정규화
    Project Join Normal Form(PJNF)라고도 부르며 조인 종속(분해 후 다시 조인 했을 때 동일한 값이 나오는 것)이 없도록 분해하는 것이다.

일반적으로 제3정규화까지만 사용하며 제5정규화는 사용하지 않는다.

참조 블로그
1. 정규화 + 유형_p.2
2. 정규화 + 이상 + 유형 p.2
3. 정규화

0개의 댓글

관련 채용 정보