Normalization

이상현상(Anomly)
삭제 이상: 튜플 삭제 시 같이 저장된 다른 정보까지 연쇄적으로 삭제되는 현상
삽입 이상: 튜플 삽입 시 특정 속성에 해당하는 값이 없어 NULL을 입력해야 하는 현상
수정 이상: 튜플 수정 시 중복된 데이터의 일부만 수정되어 일어나는 데이터 불일치 현상
    Deletion Anomly
튜플을 삭제할 때 저장되어 있는 다른 정보도 삭제되어 연쇄 삭제(Triggered Deletion)의 문제가 발생하는 경우를 의미
    Insertion Anomly
튜플을 삽입하는 경우에 해당하는 정보가 없어 NULL을 넣는 현상
    Update Anomly
어떤 값을 참조하는 튜플의 값을 수정할 때 같은 데이터를 참조하는 다른 튜플과 데이터가 달라지는 현상
위와 같은 이상현상(Anomly)는 서로 공유하는 데이터임에도 각자의 튜플에 독립적으로 존재하기 때문에 발생한다.
테이블을 분리하여 그 테이블을 통해 강의 제목이나 강의실을 참고하게끔 한다면 해결할 수 있다.
함수 종속성(Functional Dependency)
어떤 속성 A의 값을 알면 다른 속성 B의 값이 유일하게 정해지는 관계를 종속성이라고 한다
A->B로 표기하고, A를 B의 결정자라고 한다.
함수 종속성 다이어그램(Functional Dependency Diagram)

릴레이션 속성은 직사각형으로 표기
화살표를 이용하여 종속성을 표현한다.
복합속성의 경우에는 그 속성들을 묶어 하나의 직사각형으로 표시한다.
함수 종속성 규칙
부분집합 규칙
증가 규칙
이행 규칙
결합 규칙
분해 규칙
유사이행 규칙
릴레이션 기본키
관계(Relationship): 개체 사이의 연관성을 나타내는 개념
관계 타입(Relationship Type): 개체 타입과 개체 타입 간의 연결 가능한 관계를 정의
관계 집합(Relationship set): 관계로 연결되 집합
이상현상은 한 개의 릴레이션에 두 개 이상의 속성이 포함되어 있고,
기본키가 아닌 속성이 결정자일 때 발생한다.
정규화(Normalization)
정규화: 이상현상이 발생하는 릴레이션을 분해하여 이상현상을 없애는 과정
이상현상이 있는 릴레이션은 이상현상을 일으키는 함수 종속성의 유형에 따라 등급을 구분가능
릴레이션은 정규형 개념으로 구분하여, 정규형이 높을수록 이상현상이 줄어든다.
제 1 정규형
모든 속성 값이 원자값을 갖는 경우
제 2 정규형
제 1 정규형을 만족하고, 기본키가 아닌 속성이 기본키에 완전 함수 종속인 경우
제 3 정규형
릴레이션 R이 제 2 정규형을 만족하고,
기본키가 아닌 속성이 기본키에 비이행적(Non-Transitive)으로 종속(직접 종속)인 경우
BCNF 정규형
릴레이션 R에서 함수 종속성 X->Y가 성립할 때 모든 결정자 X가 후보키인 정규형
무손실 분해
이상현상을 해결하기 위해서는 릴레이션을 분해해야 한다.
하나의 릴레이션 R을 분해할 때, 분해 후의 결과와 달리지면 문제가 발생할 수 있다.

릴레이션 R을 R1과 R2로 분해할 때, R1▷◁R2를 만족하는 경우를 무손실 분해(Loseless-join decomposition)라고 한다.