정규화

Dophi·2023년 1월 27일
0

소개글

면접 대비겸 여러 블로그들을 참고하면서 정리해본 CS 지식들을 포스팅하고 있습니다.
만약 틀린 내용이 있다면 피드백은 언제나 환영합니다.
제 나름대로 요약한 내용이기 때문에 자세한 내용은 제일 아래쪽 참고 사이트에서 확인하면 좋을 것 같습니다!
말투는 편한 말투로 작성하니 양해 부탁드립니다.

정규화

Anomaly (이상)

삽입 이상 (Insertion Anomaly)

튜플을 삽입하기 위해 불필요한 데이터를 추가해야하는 현상
예시) 기본키가 {학번, 과목} 인데 학생 추가하고 싶음 → 과목 안들었으면 억지로 값 추가해야함

갱신 이상 (Update Anomaly)

일부만 변경하여 데이터가 불일치하는 현상
예시) 전공을 음악에서 컴퓨터로 변경 → 일부 데이터를 깜빡하고 변경 못함

삭제 이상 (Deletion Anomaly)

튜플을 삭제할 때 필요한 정보까지 삭제되는 현상
예시) {학번, 과목} 에서 과목 철회하고 싶음 → 학번도 같이 삭제됨

정규화

목적

  • 불필요한 데이터를 제거해 중복을 최소화함
  • 각종 이상 현상을 방지함
  • 테이블의 구성을 논리적이고 직관적이게 함
  • 데이터베이스 구조 확장에 용이해짐

단점

  • JOIN 연산이 많아져서 응답 시간이 느려질 수 있음
  • 이렇게 조회를 많이 하여 성능이 저하되는 경우에는 반정규화가 필요할 수도 있음
    • 반정규화 - 데이터의 중복을 허용하고 조인을 줄이는 기법

종류

1정규화 (1NF)

  • 테이블의 컬럼이 원자값을 갖도록 함
  • 두개 이상의 값이 동시에 들어가 있으면 안됨

2정규화 (2NF)

  • 테이블이 완전 함수 종속을 만족하도록 함
  • 완전 함수 종속 - 기본키의 부분 집합이 결정자가 돼서는 안됨

3정규화 (3NF)

  • 이행적 함수 종속을 없애도록 함
  • 이행적 함수 종속: A→B, B→C 일 때 A→C가 성립하는 것
  • A→B 인 테이블과 B→C인 테이블로 분리

BCNF정규화

  • 모든 결정자가 후보키가 되도록 함
  • 결정자: A→B가 성립할 때 A에 해당하는 컬럼

4정규화 (4NF)

  • 다치 종속을 없애도록 함
  • 다치 종속: A→B일 때 B에 해당하는 속성이 여러개 있는 것

5정규화 (5NF)

  • 조인 종속을 없애도록 함
  • 조인 종속: 테이블을 분리했다가 조인으로 다시 합쳤을 때 필요없는 데이터가 생겨버리는 것

참고 사이트

https://dev-coco.tistory.com/63
https://dev-coco.tistory.com/62
https://velog.io/@wisdom-one/정규화Normalization

profile
개발을 하며 경험한 것들을 이것저것 작성해보고 있습니다!

0개의 댓글