티스토리 뷰
[한빛아카데미] 오라클로 배우는 데이터베이스 개론과 실습 책으로 학습한 내용을 정리한 것입니다.
* 이상현상(Anomaly)
- 테이블에 투플을 삽입할 때 부득이하게 NULL값이 입력되거나, 삭제 시 연쇄삭제 현상이 발생하거나, 수정 시 데이터의 일관성이 훼손되는 현상
- 삭제이상(Deletion Anomaly) : 투플 삭제 시 같이 저장된 다른 정보까지 연쇄적으로 삭제되는 현상 -> 연쇄삭제 문제 발생
- 삽입이상(Insertion Aomaly) : 투플 삽입 시 특정 속성에 해당하는 값이 없어 NULL값을 입력해야 하는 현상 -> NULL값 문제 발생
- 수정이상(Update Anomaly) : 투플 수정 시 중복된 데이터의 일부만 수정되어 데이터의 불일치 문제 발생 현상 -> 불일치 문제 발생
* 함수 종속성
- 종속성(Dependent) : 어떤 속성 A의 값을 알면 다른 속성 B의 값이 유일하게 정해지는 의존 관계
- A -> B로 표기 하며, A는 B의 결정자라고 함
[학생수강성적 릴레이션]
- 종속관계 예시 : 학생번호 -> 학생이름, 학생번호 -> 주소, 강좌이름 -> 강의실, 학과 -> 학과사무실
- 종속하지 않는 예 : 학생이름 -> 강좌이름, 학과 -> 학생번호, 학생이름 -> 학과 (동명이인)
- 함수 종속성을 판단할 때는 릴레이션의 현재 인스턴스(데이터)만을 가지고 판단하는 것이 아닌 속성이 갖는 의미로 판단
* 함수 종속성 다이어그램
- 함수 종속성을 나타내는 표기법
- 릴레이션의 속성을 직사각형, 속성 간의 함수 종속성을 화살표로 나타내며, 복합 속성의 경우에는 직사각형으로 묶어 그림
- 종속관계
1) 학생번호 -> 학생이름
2) 학생번호 -> 주소
3) 강좌이름 -> 강의실
4) 학과 -> 학과사무실
5) 강좌이름 -> 강의실
6) (학생번호, 강좌이름) -> 성적
[위 종속 관계를 다이어그램으로 표현]
* 함수 종속성 규칙
- X, Y, Z가 릴레이션 R에 포함된 속성의 집합이라고 할 때, 함수 종속성에 관한 다음과 같은 규칙이 성립함
- 부분집합(Subset) 규칙 : if Y ⊆ X, then X -> Y
- 증가(Augmentation) 규칙 : if X -> Y, then XZ -> YZ
- 이행(Transitivity) 규칙 : if X -> Y and Y -> Z, then X -> Z
- 결합(Union) 규칙 : if X -> Y and X -> Z, then X -> YZ
- 분해(Decomposition) 규칙 : if X -> YZ, then X -> Y and X -> Z
- 유사이행(Pseudotransitivity) 규칙 : if X -> Y and WY -> Z, then WX -> Z
* 함수 종속성과 기본키
- 릴레이션 R(K, A1, A2, A3, ... , An)에서 K가 기본키라면, K -> R 성립
- 기본키 : 릴레이션의 모든 속성의 결정자
[학생 릴레이션]
- 이름이 같은 학생이 없다고 가정하면, '이름 -> 학과, 이름 -> 주소, 이름 -> 취득학점'이므로 '이름 -> 이름, 학과, 주소, 취득학점' 성립
- 즉 이름 속성이 학생 릴레이션의 전체를 결정함
* 이상현상과 결정자(Anomaly & Determinant)
- 이상현상 : 기본키가 아니면서 결정자인 속성(비후보키 결정자 속성)이 있을 때 발생함
- 결정자 : 어떤 속성의 값이 다른 속성 값을 고유하게 결정할 수 있으며, 주어진 릴레이션에서 다른 속성을 고유하게 결정하는 하나 이상의 속성을 의미함
* 정규화(Nomalization)
- 이상현상이 발생하는 릴레이션을 분해하여 이상현상을 없애는 과정
- 이상현상이 있는 릴레이션은 이상현상을 일으키는 함수 종속성의 유형에 따라 등급을 구분할 수 있음
- 릴레이션은 정규형이라는 개념으로 구분하며, 정규형이 높을수록 이상현상을 줄어듦
* 정규화 과정
- 대부분의 정규화 과정을 BCNF 릴레이션에서 이상현상이 없어짐
* 제 1정규형
- 릴레이션의 속성 값이 원자값이어야 한다는 조건
- 릴레이션 R의 모든 속성 값이 원자값을 가질 때
[제 1정규형 변환 - 속성 값이 원자값을 갖도록 분해]
- 고객취미들(이름, 취미들) -> 고객취미(이름, 취미)
* 제 2정규형
- 릴레이션의 기본키가 복합키일 때, 복합키의 일부분이 다른 속성의 결정자인지 여부를 판단하는 것
- 릴레이션 R이 제 1정규형이고 기본키가 아닌 속성이 기본키에 완전 함수 종속일 때
- 완전 함수 종속(Full Functional Dependency) : A와 B가 릴레이션 R의 속성이고 A -> B 종속성이 성립할 때, B가 A의 속성 전체에 함수 종속하고 부분 집합 속성에 함수 종속하지 않을 경우
[제 2정규형 변환 - 수강강좌 릴레이션을 수강, 강의실 릴레이션으로 분해]
- 수강강좌(학생번호, 강좌이름, 강의실, 성적) -> 수강(학생번호, 강좌이름, 성적), 강의실(강좌이름, 강의실)
* 제 3정규형
- 속성들이 이행적(Transitive)으로 종속되어 있는지 여부를 판단하는 것
- 릴레이션 R이 제 2정규형이고 기본키가 아닌 속성이 기본키에 비이행적으로 종속할 때(직접 종속)
- 이행적 종속 : A -> B, B -> C가 성립할 때 A -> C가 성립되는 함수 종속성
[제 3정규형 변환 - 계절학기 릴레이션을 계절수강, 수강료 릴레이션으로 분해]
- 계절학기(학생번호, 강좌이름, 수강료) -> 계절수강(학생번호, 강좌이름), 수강료(강좌이름, 수강료)
* BCNF(Boyce Codd Normal Form)
- 릴레이션에 존재하는 함수 종속성에서 모든 결정자가 후보키
- 릴레이션 R에서 함수 종속성 X -> Y가 성립할 때 모든 결정자 X가 후보키
[특강수강 릴레이션]
[BCNF 정규형으로 변환 - 특강수강 릴레이션을 특강신청, 특강교수 릴레이션으로 분해]
- 특강수강(학생번호, 특강이름, 교수) -> 특강신청(학생번호, 교수), 특강교수(특강이름, 교수)
* 무손실 분해(Lossless-join Decomposition)
- 릴레이션 R을 분해하여 두 개의 릴레이션 R1과 R2를 만들었을 때, 다시 조인을 하면 원래 릴레이션 R이 만들어진다는 의미
- 릴레이션 R을 릴레이션 R1과 R2로 분해할 때, R1⋈R2 = R
- 조건 : R1 ∩ R2 -> R1 혹은 R1 ∩ R2 -> R2 중 하나를 만족해야 함
[특강수강 릴레이션]
[특수수강 릴레이션을 R3, R4 릴레이션으로 분해]
'개인공부 > 데이터베이스' 카테고리의 다른 글
[데이터베이스] 트랜잭션, 동시성 제어, 회복 (0) | 2023.12.07 |
---|---|
[데이터베이스] 데이터 모델링(Data Modeling) (0) | 2023.12.04 |
[데이터베이스] 데이터베이스 프로그래밍 (0) | 2023.12.04 |
[데이터베이스] SQL 고급 (0) | 2023.12.04 |
[데이터베이스] SQL 기초 (0) | 2023.12.04 |