CLOUD/Server

[DB] 정규화

alsruds 2023. 3. 2. 15:08

[ 정규화란? ]

이상 문제를 해결하기 위해 속성 간 종속 관계를 분석하고 릴레이션을 분해하는 과정

데이터의 중복성 최소화 (릴레이션의 속성/개체/관계 파악)

DB의 논리적 처리에 영향

정규화를 통해 릴레이션 분해 시 일반적으로 연산 시간 증가

 

[ 이상(Anomaly) ]

속성 간 존재하는 여러 종속 관계를 하나의 릴레이션에 표현하면서 발생

  • 삽입 이상 : 데이터를 저장할 때 원치 않는 정보가 함께 삽입
  • 삭제 이상 : 튜플을 삭제하면서 유지되어야 하는 정보까지도 연쇄적으로 삭제
  • 갱신 이상 : 중복된 튜플 중 일부 속성만 갱신시키면서 정보의 모순성 발생

 

[ 정규화 과정 ]

함수적 종속

X→ Y  ( X,Y : 속성들의 부분 집합 )

     : 특정 튜플에서 X의 값이 Y의 값을 함수적으로 결정 > Y가 X에 함수적 종속

     - 이행 규칙 : X → Y 이고 Y Z 이면 X

 

제 1 정규형

도메인이 모두 원자값

¿ 변경 전

학생 번호 이름  학부
1 컴퓨터공학부, 경영학부
2 경제학부

¡ 변경 후

학생 번호 이름 학부
1 컴퓨터공학부
1 경영학부
2 경제학부

 

제 2 정규형

》 부분 함수 종속 제거

기본키가 2개 이상일 때 그 중 하나가 혼자 다른 키를 결정 > 표를 나눔

¿ 변경 전 : 과목 코드가 학부 결정

학번 과목코드 성적 학부
1 CS01 A+ 컴퓨터공학부
1 CS02 A 컴퓨터공학부
2 CS01 D 컴퓨터공학부

¡ 변경 후 : 표를 2개로 분리

학번 과목코드 성적
1 CS01 A+
1 CS02 A
2 CS01 D
학번 학부
1 컴퓨터공학부
1 컴퓨터공학부
2 컴퓨터공학부

 

제 3 정규형

이행 함수 종속 제거

¿ 변경 전 : 학부가 등록금 결정

학번 학부 등록금
1 컴퓨터공학부 450
2 경영학부 400
3 경제학부 350
4 컴퓨터공학부 450

¡ 변경 후 : 표 2개로 분리

학번 학부
1 컴퓨터공학부
2 경영학부
3 경제학부
4 컴퓨터공학부
학부 등록금
컴퓨터공학부 450
경영학부 400
경제학부 350

 

 기타

  • BCNF : 결정자 중 후보키가 아닌 것들을 제거
  • 제 4 정규형 : 다치 종속 제거
  • 제 5 정규형 : 조인 종속 제거

'CLOUD > Server' 카테고리의 다른 글

[DB 이중화] Active(쓰기) - Active(읽기)  (0) 2023.03.02
[DB] SQL  (0) 2023.03.02
[DB] 사상 (Mapping)  (0) 2023.03.02
[DB] 관계 데이터 모델  (0) 2023.03.02
[AWS/Ubuntu/Django] 웹페이지 배포하기  (0) 2023.02.28