All
잘못된 데이터베이스 모델링
•
데이터의 중복
•
갱신이상
◦
삽입 이상: 원치 않은 데이터도 함께 삽입되는 현상
◦
삭제 이상: 특정 데이터 삭제 시 원치 않은 정보까지 함께 삭제되는 현상
◦
수정 이상: 데이터를 수정할 때 모든 중복된 데이터를 수정하지 않아 발생하는 불일치 현상
함수적 종속성의 이해
•
릴레이션에서 한 속성의 값이 다른 속성의 값을 결정하는 관계
•
표기법: X → Y
•
함수적 종속성은 릴레이션 효율성 여부에 중요한 판단 기준
•
추론 규칙(암스트롱 공리) 이용하여 확장된 클로저(Closure) 생성
◦
클로저(F+): 판별된 종속성 집합에서 유추 가능한 모든 함수적 종속성 집합
함수적 종속성 추론 규칙
암스트롱 공리
1.
재귀성 규칙: Y⊆X이면 X→Y
2.
부가성 규칙: X→Y이면 XZ→YZ
3.
이행성 규칙: X→Y, Y→Z이면 X→Z
4.
분해 규칙: X→YZ이면 X→Y, X→Z
5.
합집합 규칙: X→Y, X→Z이면 X→YZ
6.
의사 이행성 규칙: X→Y, WY→Z이면 WX→Z
함수적 종속성의 판별
고객번호 → 고객명, 고객명 → 등급, {고객번호, 고객명} → 할인율
결과적으로 고객번호 → {고객명, 등급, 할인율}
카노니컬 커버(Canonical Cover)
•
함수적 종속성의 최소 표현(Minimal Cover) 또는 정규 커버(Normal Cover) 라고도 부름
•
기존 함수적 종속성 집합에서 중복된 종속성과 자명한(trivial) 종속성을 제거하고, 최소한의 표현으로 압축한 집합
•
정규화를 수행하기 전, 모든 종속성을 명확하게 정의하여 불필요한 속성 제거를 돕는 중요한 과정
카노니컬 커버의 조건
•
각 함수적 종속성의 우변(종속자)은 반드시 한 개의 속성만 가짐
◦
예: A → B, C 는 A → B, A → C로 분리해야 함
•
불필요한 속성이 없음 (좌변 및 우변 모두에 해당)
◦
예: AB → C에서 만약 A → C가 성립하면 B는 불필요한 속성이므로 제거
•
중복된 함수적 종속성 없음
◦
예: A → B가 이미 존재할 때 동일한 A → B 중복 선언은 제거
정규화
이상현상 최소화 목적의 조건 갖춘 릴레이션 형태로 재구성 과정
정규형의 기능
•
데이터베이스 모든 릴레이션 효율적 표현
•
삽입, 삭제, 수정 이상 방지
•
관계를 간단하게 표현해 관리 용이성 확보
제1정규형(1NF)
릴레이션 스키마에서 정의된 모든 속성의 도메인이 원자값 상태
•
관계형 모델의 특성을 만족하는 경우 자동 적용되는 정규형
예시
주문번호 | 고객명 | 상품코드 | 수량 |
1 | 김철수 | A, B | 2, 3 |
[주문번호] → 고객명, 상품코드, 수량
Plain Text
복사
정규화(1NF) 적용 후
주문번호 | 고객명 | 상품코드 | 수량 |
1 | 김철수 | A | 2 |
1 | 김철수 | B | 3 |
[주문번호] → 고객명
[주문번호, 상품코드] → 수량
Plain Text
복사
제2정규형(2NF)
릴레이션이 제 1정규형을 만족하고 기본키의 부분집합이 특정 속성을 종속하고 있지 않은 상태
•
부분 함수 종속: Y가 X의 전체가 아닌 일부분에 종속
•
전체 함수 종속: Y가 X의 전체에 종속
릴레이션의 무손실 분해
•
릴레이션을 여러 개의 하위 릴레이션으로 분해할 때 원본 릴레이션을 완벽하게 복원할 수 있는 분해 방법
•
정규화를 진행하면서 이상(anomaly)을 방지하기 위해 릴레이션을 쪼갤 때 필수적으로 지켜야 하는 원칙
•
무손실 분해 원칙을 지켜 분해하면 원본 데이터를 정확히 복원할 수 있고, 데이터 무결성을 유지할 수 있음
예시
주문번호 | 고객명 | 상품코드 | 수량 |
1 | 김철수 | A | 2 |
정규화(2NF) 적용 후 주문/주문상세 테이블로 분할
주문 테이블
주문번호 | 고객명 |
1 | 김철수 |
주문 상세 테이블
주문번호 | 상품코드 | 수량 |
1 | A | 2 |
제 3정규형
릴레이션이 제2정규형을 만족하고, 기본키가 아닌 속성 간 이행적으로 종속 제거 상태
이행적 종속: X→Y, Y→Z 이면 X→Z 성립하는 종속 관계
예시
주문 테이블 (2NF 상태)
주문번호 | 고객명 | 고객등급 |
1 | 김철수 | VIP |
[주문번호] → 고객명, 고객등급
고객명 → 고객등급 (이행적 종속)
Plain Text
복사
정규화(3NF) 적용 후 주문/고객으로 분할
주문 테이블
주문번호 | 고객명 |
1 | 김철수 |
고객 테이블
고객명 | 고객등급 |
김철수 | VIP |
[주문번호] → 고객명
[고객명] → 고객등급
Plain Text
복사
BC 정규형(BCNF)
릴레이션이 제3정규형을 만족하고 릴레이션에 성립하는 X -> Y 형태의 모든 함수적 종속성에 대하여 X가 수퍼키인 상태
예시
교수 | 강좌 | 강의실 |
A | DB | 101 |
BCNF 적용 (교수가 여러 강좌 강의 불가 등 제약 조건 가정)
교수-강좌 테이블
교수 | 강좌 |
A | DB |
강좌-강의실 테이블
강좌 | 강의실 |
DB | 101 |
역정규화
•
정규화 통해 중복 최소화했으나 많은 조인 연산으로 성능 저하 초래 가능
•
중복 허용해 성능 개선 목적의 의도적 비정규화 과정
•
자주 조회되는 데이터 일부 중복 저장으로 성능 향상 목적
•
트레이드오프(trade-off): 성능 향상
데이터 무결성 및 관리 복잡성 증가