List
Search
1. 좋은 릴레이션과 나쁜 릴레이션
•
나쁜 릴레이션의 예
◦
부분적인 중복이 발생하는 경우
1.1. 잘못된 데이터베이스 모델링
•
데이터의 중복
◦
일관성 유지의 어려움
◦
저장 공간 낭비
•
갱신 이상
◦
삽입 이상
◦
삭제 이상
◦
수정 이상
1.2. 갱신 이상
•
삽입 이상
◦
레코드 추가시 불필요한 컬럼 값 없이는 추가하지 못하는 경우
•
삭제 이상
◦
삭제 시 의도하지 않았던 다른 데이터가 삭제되는 경우
•
수정 이상
◦
중복 저장된 레코드를 수정 시 모두 반영이 안되어 일관성이 깨지는 경우
1.3. 좋은 릴레이션의 개념
•
릴레이션의 스키마가 얼마나 효율적으로 실세계를 반영하고 있는지 평가
•
고려사항
◦
한 릴레이션 내에 컬럼 간의 관계 분석
◦
원하지 않는 데이터의 종속과 중복 제거
◦
새뢔운 컬럼들이 데이터베이스에 추가될 때, 기존 컬럼과의 관게 수정 최소화
•
예시
2. 함수적 종속성
2.1. 함수적 종속성의 정의
•
릴레이션의 인스턴스를 분석하여 속성들 간의 연관관계를 표현한 것
•
릴레이션의 효율성을 향상시켜 좋은 릴레이션으로 변환하는데 이용되는 중요한 개념
임의의 릴레이션 스키마 R이 인스턴스 r(R)에 포함되는
서로 다른 두 레코드 r1, r2와 컬럼 집합 X와 Y에 대해
r1[X] = r2[X] 일때, r1[y] = r2[y] 이면 함수적 종속성 X → Y가 성립한다.
•
함수적 종속성 판별 예시
◦
등급이 할인율을 종속함
◦
{등급} → {할인율}
▪
등급: 결정자
▪
할인율: 종속자
◦
예시
▪
골드이면, 할인율이 5%이다
▪
VIP이면 할인율이 10%이다
2.2. 함수적 종속성의 확장
•
함수적 종속성은 릴레이션의 효율성 여부에 중요한 판단 기준
•
그러나 릴레이션의 인스턴스만으로 내재된 모든 함수적 종속성을 찾아내기 어려움
•
판별되지 않은 모든 함수적 종속성을 찾기 위해 추론 규칙을 사용해 함수적 종속성을 확장
•
클로저
◦
판별된 함수적 종속성 집합으로부터 유추할 수 있는 모든 함수적 종속성 집합
◦
F+
2.3. 함수적 종속성의 추론 규칙
•
암스트롱 공리
◦
재귀성 규칙
▪
{등급, 할인율} → {할인율}
2.4. 함수적 종속성의 판별
•
고객번호 → 고객명
◦
고객번호는 고객명을 종속한다.
◦
(전체 레코드를 찾아봐도, 같은 고객번호에 다른 고객명은 없음)
•
고객명 → 등급
◦
고객명은 등급을 종속한다.
•
{고객번호, 고객명} → 할인율
◦
{고객번호, 고객명}은 할인율을 종속한다.
•
고객번호 → {고객명, 등급, 할인율}
◦
고객번호는 {고객명, 등급, 할인율}를 종속한다.
•
예시
2.5. 카노니컬 커버
•
함수적 종속성 추론 규칙으로 확장된 클로저에는 자명한 종속성과 중복된 종속성을 포함함
◦
자명한 종속성
▪
A → A (의미가 당연)
◦
중복된 종속성
▪
X → AB, X → B (의미가 여러번 존재)
•
불필요한 함수적 종속성을 제거한 표준형으로 ㅂ련환후 정규화 수행
•
표준형 조건
◦
F의 모든 함수적 종속성의 오른편 속성은 반드시 1개
▪
예)
•
{X, Y} → {Z} (O)
•
{X} → {A,B} (X)
◦
F에서 X → A를 X의 진부분집합 Y에 대하여 Y → A로 교체했을 때, 그 집합이 F와 동등한 집합이 불가능
◦
F에서 어떤 함수적 종속성을 제거했을 때, 그 집합이 F와 동등한 집합이 불가능
•
Fc
3. 정규화
3.1. 정규형
•
이상 현상을 최소화 하도록 특정 조건을 갖춘 릴레이션의 형식
•
정규형의 분류
◦
제1,2,3,BC,4,5 정규형
3.2. 정규화의 목적
•
정의
◦
특정 정규형의 조건을 만족하도록 릴레이션과 속성을 재구성하는 과정
•
기능
◦
데이터베이스 내 모든 릴레이션을 효과적으로 표현
◦
검색 알고리즘 최적화
◦
이상현상 방지
◦
릴레이션 재구성 필요성 축소
3.3. 제1 정규형
릴레이션 스키마에서 정의된 모든 속성의 도메인이 원자값을 갖는 상태
•
가장 조건이 단순한 정규형
•
관계형 모델에 조건에 따라 자동 적용되는 정규형
•
예시
3.4. 함수적 종속성 다이어그램 (FDD)
•
릴레이션 내의 속성간의 종속성관계를 직관적이고 이해하기 쉽게 도식화한 표현 방식
◦
직사각형
▪
속성 또는 속성 집합
◦
화살표
▪
함수적 종속성
◦
예시
•
도크 예시
3.5. 제2정규형
주어진 릴레이션의 인스턴스가 기본키가 아닌 속성들이 기본키에 완전히 종속되어 있는 상태
•
부분적으로 종속된 속성을 따로 분리
•
릴레이션이 제1정규형을 만족하고 기본키의 부분집합이 특정 속성을 종속하고 있지 않은 상태
•
기본키에 완전히 종속되도록 릴레이션을 분해
•
무손실 분해
◦
스키마 R에 함수적 종속성 X → Y가 존재하고 X ∩ Y = Ø 이면 R을 R - Y와 XY로 분해
•
도크 관리 릴레이션의 무손실 분해
◦
{도크번호} → {도크관리자}
◦
{도크번호} ∩ {도크관리자} = Ø
◦
도크 관리 - {도크관리자}, {도크번호, 도크관리자}
•
제2정규화의 함수적 종속성 다이어그램
3.6. 제3정규형
•
릴레이션이 제2정규형을 만족하고, 기본키가 아닌 속성들이 어떤키에도 이행적으로 종속되지 않은 상태
•
이행적 종속성
◦
X → Y 이고 Y → Z이면 X → Z이다
•
예시
3.7. BC정규형
•
릴레이션이 제3정규형을 만족하고 릴레이션에 성립하는 X→Y 형태의 모든 함수적 종속성에 대하여 X가 슈퍼키인 상태
•
예시) 입출항관리 릴레이션의 함수적 종속성
◦
{도크번호, 입항시간} → {목적}
◦
{도크번호, 입항시간} → {출항시간}
◦
{목적} → {도크번호}
▪
목적은 기본키, 후보키에도 포함되지 않는 일반속성인데도 도크번호라는 속성을 종속하고 있음
•
적용
◦
목적이 도크번호를 종속하는 케이스 방지
▪
목적이 결정자이므로 기본키인 도크번호를 대체함
▪
도크번호는 종속자이므로 따로 빠짐
3.8. 정규화 결과
•
Before
•
After
3.9. 역정규화
•
정규화
◦
릴레이션 분할을 통해 중복성 최소화함
◦
그러나 많은 조인 연산을 유발함
•
역정규화
◦
정규화의 반대 과정
◦
정보의 부분적 중복을 허용하는 기법
◦
데이터 접근 성능을 개선 목적
•
정규화 되지 않은 스키마와 역정규화 스키마는 구별되어야함