삽입 이상(insertion anomaly)
원하지 않는 자료가 삽입된다든지, key가 없어 삽입하지 못하는(불필요한 데이터를 추가해야 삽입할 수 있음)문제점
삭제 이상(deletion anomaly)
하나의 자료만 삭제하고 싶지만, 그 자료가 포함된 튜플 전체가 삭제됨으로 원하지 않는 정보 손실이 발생하는 문제점
갱신 이상(update anomaly)
일부만 변경하여 데이터가 불일치하는 모순, 또는 중복되는 튜플이 존재하게 되는 문제점
데이터의 중복 방지, 무결성
vs 데이터베이스 성능, 단순화
B는 A에 함수 종속이다
라고 한다. A->B
이때, A를 결정자(Determinant)라고 하고, B를 종속자(Dependant)라고 한다.
완전 함수 종속
기본키를 구성하는 모든 속성에 종속되는 경우
부분 함수 종속
기본키를 구성하는 속성의 일부에 종속되거나, 기본키가 아닌 다른 속성에 종속되는 경우
이행적 함수 종속
A, B, C 세 속성이 있고 A->B, B->C 종속 관계가 있을 때, A->C가 성립하는 경우
학년과 이름은 기본키인 (학번, 과목번호)에 대해 부분 함수 종속이고, 성적은 완전 함수 종속이다.
키(Key)
데이터베이스에서 조건에 만족하는 관계의 행을 찾거나 순서대로 정렬할 때 다른 행과 구별할 수 있는 유리한 기준이 되는 속성의 집합이다.
슈퍼키(Super Key)
- 테이블에서 각 행을 유일하게 식별할 수 있는 하나 또는 그 이상의 속성들의 집합이다.
- 유일성을 만족한다.
후보키(Candidate Key)
- 테이블에서 각 행을 유일하게 식별할 수 있는 최소한의 속성들의 집합이다.
- 유일성과 최소성을 동시에 만족한다.
기본키(Primary Key)
- 후보키들 중에서 하나를 선택한 키로 최소성과 유일성을 만족하는 속성이다.
- 테이블에서 기본키는 오직 1개이다
- 기본키는 NULL 값을 절대 가질수 없고, 중복된 값을 가질 수 없다.
대체키(Alternate Key)
- 후보키가 두개 이상일 경우 그 중에서 어느 하나를 기본키로 지정하고 남은 후보키들을 대체키라고 한다.
- 대체키는 기본키로 선정되지 않은 후보키이다.
외래키(Foreign Key)
- 테이블이 다른 테이블의 데이터를 참조하여 테이블간의 관계를 연결하는 것이다.
- 다른 테이블의 데이터를 참조할 때 없는 값을 참조할 수 없도록 제약을 주는 것이다.
- 참조 될 테이블(A)이 먼저 만들어지고 참조하는 테이블(B)에 값이 입력되어야 한다.
- 참조될(A) 열의 값은 참조될(A) 테이블에서 기본키(Primary Key)로 설정되어 있어야 한다.
- 외래키는 참조되는 테이블의 기본키와 동일한 키 속성을 가진다.
- 참조되는 부모테이블이 먼저 생성된 뒤 데이터를 넣고, 참조하는 자식 테이블이 다음에 생겨야 된다.
- 부모 테이블이 먼저 삭제될 수 없다. -> 외래키 오류
학생 Table
-> 부모 테이블, 학번이 기본키이자 참조되는 참조키
수강 Table
-> 자식 테이블, 학번이 참조하는 키이자 외래키
제1 정규형은 릴레이션에 속하는 속성의 속성 값이 모두 원자값(Atomic Value)만으로 구성되어야 한다.
제1 정규형이 되려면 다음과 같이 속성 값을 분리해주어야 한다.
기본키(Primary key)가 아닌 속성들이 기본키에 완전 함수 종속되지 못하고 부분 함수 종속되어 있기 때문에 이상현상이 발생한다.
- 삽입 이상 : 학생이 새 과목을 수강 신청할 때 반드시 학생의 학과와 지도교수를 알아야 한다. (불필요한 정보)
- 삭제 이상 : 300번 학생이 C400 과목을 취소하면, 해당 과목에 대한 정보가 모두 사라진다.
- 갱신 이상 : 100번 학생이 지도교수를 변경할 때, P1인 행을 모두 찾아서 변경해주어야 한다.
- 삽입 이상 : 지도교수가 학과에 소속되어 있음을 추가할 때 반드시 지도 학생이 있어야 한다. (불필요한 정보 필요)
- 삭제 이상 : 300번 학생이 자퇴하는 경우 P3 교수의 학과 정보가 사라진다.
- 갱신 이상 : 지도교수의 학과가 변경되는 경우 모두 찾아서 변경시켜주어야 한다. (지도교수가 동일한 학생이 여러 명 있는 경우)
BCNF는 제3 정규형이면서, 결정자이면서 후보키가 아닌 것을 제거한 정규형을 말한다.
위는 제3 정규형을 만족하지만 이상현상이 발생할 수 있다.
- 삽입 이상 : 새로운 교수가 특정 과목을 담당한다는 새로운 정보를 추가할 수 없다. 적어도 한 명 이상의 수강 학생이 필요하다.
- 삭제 이상 : 학번 100이 C234 과목을 취소하면, P2가 C234 과목을 담당한다는 정보도 삭제된다.
- 갱신 이상 : P1의 과목이 변경되면 P1인 행을 모두 찾아 변경시켜주어야 한다.
따라서 모든 결정자는 항상 후보키가 되도록 릴레이션을 분해해주면 BCNF를 만족한다.