데이터베이스 설계 4) 함수적 종속
논리적 설계 단계에서 데이터 중복 문제는 테이블을 분해함으로써 해결이 가능하다.
이 때, 데이터 중복의 발생 여부를 파악하는 데에 사용되는 것이 '함수적 종속'이다.
1. 함수적 종속이란?
: 무결성 제약의 한 종류로, 테이블 내 필드 값들 사이의 관계성을 표현한다.
< 정의 >
테이블 R에서 필드 X값이 동일한 임의의 레코드에 대해 필드 Y의 값도 동일하다면 "Y는 X에 함수적으로 종속된다"고 한다.
X -> Y (결정자, 종속자)
라고 표현한다.
ex)
2. 함수적 종속의 특징
: 다대일 또는 일대일 관계이다.
: 결정자 또는 종속자가 두 개 이상의 필드를 구성할 수도 있다.
: 기본키가 있으면 다른 필드들이 기본키에 함수적으로 종속된다.
1) 포함 규칙
ex) (A, B) -> A
2) 분해 규칙
(A, B) -> C 가 성립한다고 해서, A->C, A->B 가 만족되지는 않음
3) 합성 규칙
4) 이행 규칙
3. 키와 함수적 종속의 관계
: 테이블의 모든 필드는 키(수퍼키포함)에 함수적으로 종속된다. 즉, 함수적 종속은 수퍼키의 개념을 일반화한 것이다.
4. 함수적 종속의 유지 방법
: 기본키가 아닌 필드에 대해서는 DBMS가 함수적 종속을 보장해주지 않는다.
: 따라서 이러한 문제가 발생하지 않도록 테이블을 정의해야 한다. => 정규화
5. 데이터의 중복
: 논리적 설계 결과에서 하나의 테이블에 하나의 필드에서 데이터 중복 현상 발생 가능하다.
-> 이는 < 삽입 이상, 삭제 이상, 수정 이상 > 의 이상현상을 발생시킨다.
1) 삽입 이상
: 데이터를 삽입할 수 없거나, 원치 않는 데이터를 삽입
ex_) 새로운 학과 정보, ('930', '물리학과', '301호') 데이터를 넣으려면 ?
-> stu_id는 기본키이므로 null값이 허용되지 않는다.
이처럼 새로운 학과 정보를 넣고 싶은데 다른 정보들이 더 필요하다면 데이터를 삽입할 수 없다.
2) 삭제 이상
: 삭제하지 말아야 하는 정보까지 함께 삭제하는 현상
ex) 학번이 '1292501' 인 학생 정보를 삭제할 경우,
-> '전자공학과'에 대한 정보도 사라지게 된다.
3) 수정 이상
: 중복된 정보의 일부만 수정하여 정보의 불일치가 발생하는 현상
ex) '컴퓨터공학과'의 office를 211호로 변경하고자 할 때,
-> 한 레코드만 수정하면 정보의 불일치가 발생한다.
4) 해결 방안
정규화 !
student 테이블에서 학과 정보를 분리하여 department 테이블을 생성한다.
-> dept_id 필드를 외래키로 설정하여 학과 정보 연결