CS자료/데이터베이스

[DB] 정규화

뇌장하드 2022. 3. 19. 16:47

정규화

  • 정규화란?

    • 여러 규칙을 사용해 데이터베이스를 완벽하게(이상현상 없게) 설계하는 방법이고 이를 통해 데이터베이스에 저장된 데이터의 무결성을 향상시키고 저장공간을 절약 합니다.
    • 정규화 방법은 문제가 있는 테이블은 문제가 없는 작은 테이블로 쪼개는 방법입니다.
    • 나누는 정도에 따라 규칙(제약조건)이 있고 그 정도를 정규형(Normal Form)이라고 부른다.
    • 정규형은 1NF, 2NF, 3NF, BCNF, 4NF, 5NF, 6NF가 있는데 차수가 높아질수록 규칙(제약조건)이 까다로워진다. (정보처리기사 대비용으로 도부이결다조 (두부이겨다줘)
    • 일반적으로는 1~3NF(또는 ~BCNF)까지만 사용하고 나머지 정규형은 학문적 용도(전공, 수업, 논문 등)로 사용된다.
  • 1차 정규화

    • 테이블(릴레이션)에 각 도메인은 원자성(Atomicity)을 가진다.

image

  • 2차 정규화
    • 우선 2NF는 1NF를 먼저 충족이 되어야 진행을 할수 있다.
    • 그다음 속성 값의 결정이 기본키(또는 복합키)의 전체를 참조해야한다.

image

image

image

image

image

  • 3차 정규화

    • 3NF도 2NF를 충족시킨 상태에서 진행할 수 있다.
    • 3NF는 모든 속성이 기본키(또는 복합키)에 이행적 함수 종속이 되지 않아야 한다.
      • 이행적 함수 종속 : X→Y이고 Y→Z면 X→Z가 되는 것을 말한다.
  • 501학생이 수강하는 강좌가 스포츠 경영학으로 바꾼다면 15000짜리 수업을 20000에 듣게 된다.

  • 물론 다시 수강료를 변경하면 해결이 되지만 번거롭다.

  • 이를 해결하기 위해서 테이블을 분해를 한다.

  • 학생 번호를 통해 강좌 이름을 참조하고, 강좌 이름으로 수강료를 참조하도록 테이블을 분해한다.

image

image

'CS자료 > 데이터베이스' 카테고리의 다른 글

[DB] 트랜잭션 격리수준  (0) 2022.03.19
[DB] 클러스터링  (0) 2022.03.19
[DB] 인덱스를 사용하는 이유  (0) 2022.03.19
[DB] 옵티마이저  (0) 2022.03.19
[DB] 샤딩  (0) 2022.03.19