[ 정규화란? ]
》 이상 문제를 해결하기 위해 속성 간 종속 관계를 분석하고 릴레이션을 분해하는 과정
》 데이터의 중복성 최소화 (릴레이션의 속성/개체/관계 파악)
》 DB의 논리적 처리에 영향
》 정규화를 통해 릴레이션 분해 시 일반적으로 연산 시간 증가
[ 이상(Anomaly) ]
》 속성 간 존재하는 여러 종속 관계를 하나의 릴레이션에 표현하면서 발생
- 삽입 이상 : 데이터를 저장할 때 원치 않는 정보가 함께 삽입
- 삭제 이상 : 튜플을 삭제하면서 유지되어야 하는 정보까지도 연쇄적으로 삭제
- 갱신 이상 : 중복된 튜플 중 일부 속성만 갱신시키면서 정보의 모순성 발생
[ 정규화 과정 ]
● 함수적 종속
》 X→ Y ( X,Y : 속성들의 부분 집합 )
: 특정 튜플에서 X의 값이 Y의 값을 함수적으로 결정 > Y가 X에 함수적 종속
- 이행 규칙 : X → Y 이고 Y → Z 이면 X → Z
● 제 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 |