1. DB anomaly
** 갱신 이상(Modification Anomaly): 반복된 데이터 중에 일부를 갱신 할 시 데이터의 불일치가 발생하는 상태
** 삽입 이상(Insertion Anomaly): 불필요한 정보를 함께 저장하지 않고서는 어떤 정보를 저장하는 것이 불가능한 상태
** 삭제 이상(Deletion Anomaly): 필요한 정보를 함께 삭제하지 않고서는 어떤 정보를 삭제하는 것이 불가능한 상태
** Modification Anomaly:
만약에 A. Bruchs의 부서가 CIS에서 Marketing으로 바뀌었다고 가정해보자.
테이블의 4, 5번째 행의 CIS를 둘 다 바꾸지 않고 하나만 바꾼다면 A.Bruchs의 부서는 어느 부서에 속해있는지 알 수 없게 된다.
** Insertion Anomaly:
새로운 부서 Engineering이 신설되었고 아직 근무자는 없다고 가정해보자.
하지만 이 부서에 관련한 정보는 불필요한 정보를 함께 입력하지 않는 한 위 테이블에 입력할 수 없다.
** Deletion Anomaly:
만약에 Accounting 부서에 속한 사람이 J.Longfellow 단 한 명이라고 가정하자.
J.Longfellow의 정보(첫번째 행)를 삭제하면 Accounting 부서에 대한 정보도 사라지게 된다.
2. 함수 종속성 : 'A->B'로 표기하며, A를 B의 결정자라고 한다.
** 학생수강성적 릴레이션에서 종속관계에 있는 예
학생번호 -> 학생이름
학생번호 -> 학과
학과 -> 학과사무실
강좌이름 -> 강의실
** 종속하지 않는 예
학생이름 -> 강좌이름 (동명이인이 있을 수도 있으니까는...)
학과 -> 학생번호
학생번호 -> 성적
** 종속하는 것처럼 보이지만 주의 깊게 보면 그렇지 않은 예
학생이름 -> 학과 (동명이인을 생각해보면 같은 이름의 사람이 학과가 다를 수도 있다.)
2-1. 함수 종속성 다이어그램
릴레이션의 속성: 직사각형
속성 간의 함수 종속성: 화살표
복합속성: 직사각형으로 묶은 것
2-2.함수 종속성과 기본키 :
릴레이션 R(K, A1, A2, A3, ..., An)에서 K가 기본키면, K → R이 성립.
즉 기본키는 릴레이션의 모든 속성에 대해 결정자(determinant)이다.
2-3. 릴레이션 분해
3. 정규화★ ★ ★
--> 이상현상이 발생하는 릴레이션을 분해하여 이상현상을 없애는 과정
이상현상이 있는 릴레이션은 이상현상을 일으키는 함수 종속성의 유형에 따라 등급을 구분 가능하다.
릴레이션은 정규형 개념으로 구분하며, 정규형이 높을수록 이상현상은 줄어든다.
3-1. 제1정규형
릴레이션 R의 모든 속성 값이 원자값(단일값)을 가지는 것
-> RDM 릴레이션 데이터 모델이려면 반드시 제1정규형 즉 모든 속성값이 원자값을 가져야 한다.(만족해야 한다)
--> 제 1 정규형으로 변환
고객 취미들(이름, 취미들) 릴레이션을 고객 취미(이름, 취미) 릴레이션으로 바꾸어 저장하면 제 1정규형을 만족한다.
3-2. 제2정규형
릴레이션 R이 제 1정규형이고 기본키가 아닌 속성이 기본키에 완전 함수 종속할 때
** 완전 함수 종속(full functional edpendency):
A와 B가 릴레이션 R의 속성이고 A->B 종속성이 성립할 때,
B가 A의 속성 전체에 함수 종속하고 부분 집합 속성에 함수 종속하지 않을 경우 완전 함수 종속이라고 한다.
학생번호+강좌이름 -> 성적이지만, 강좌이름 -> 성적은 아님!
A의 부분속성이 다른속성을 결정지을 경우 부분함수 종속임 --> 분해해야함
--> 제 2정규형으로 변환
수강강좌 릴레이션에서 이상현상을 일으키는 (강좌이름, 강의실)을 분해함
3-3. 제3정규형
릴레이션 R이 제 2정규형이고 기본키가 아닌 속성이 기본키에 비이행적 non-transitive으로 종속할 때
( -> 이행적 종속이란 A → B, B → C가 성립할 때 A → C가 성립되는 함수 종속성이다.)
--> 이행적 종속을 분해를 해 줘야 한다.
학생번호 -> 강좌이름 , 강좌이름 -> 수강료인 상태임
연쇄적으로 어쩌다보니! 학생번호 -> 수강료가 돼버림
--> 제 3정규형으로 변환
계절학기 릴레이션에서 이상현상을 일으키는 (강좌이름, 수강료)를 분해한다.
3-4. BCNF
릴레이션 R에서 함수 종속성 X->Y가 성립할 때 모든 결정자 X가 후보키일 때
-> 결정자이면서, 후보키가 아닌 것을 제거해야 함
조건에 의해서, 학생번호+특강이름->교수, 교수 -> 특강이름이 된 상태
--> BCNF 정규형으로 변환
특강수강 릴레이션에서 이상현상을 일으키는 (교수, 특강이름)을 분해한다.
3-5. Summary
대부분의 릴레이션은 BCNF까지 정규화하면 실제적인 이상현상이 없어지기 떄문에 보통 BCNF까지 정규화를 진행한다!
** 요약의 요약 : 도부이결다조
++ 역정규화
관계형 데이터베이스에서 중복을 허용하고 정규화를 위반하는 과정
** 장점
개발 편의 향상
검색 시 성능 향상
** 단점
이상현상 발생 가능
중복 데이터로 인한 공간 낭비
--> 무조건적인 정규화가 좋은 것은 아니다!
--> 프로젝트에 따라 정규화 과정을 거친 후, 운영상 혹은 비용상의 문제로 역정규화를 거치는 것이 좋은 경우도 있다.
'DataBase(SQL) > DAY 28 _ 23.09.26' 카테고리의 다른 글
DB 이론 (0) | 2023.09.26 |
---|