이상(Anomalies)과 함수적 종속(Functional Dependency)
1. 이상 (Anomalies)
정의
- 관계형 데이터베이스에서 데이터 중복과 불필요한 종속성으로 인해 테이블 조작 시 발생하는 비정상적인 현상.
- 데이터의 삽입, 삭제, 갱신 중 특정 작업에서 문제가 발생.
이상의 종류
-
삽입 이상 (Insertion Anomaly)
- 문제: 새로운 데이터를 삽입할 때 불필요하거나 알 수 없는 값을 추가해야 하는 경우.
- 예시:
수강 테이블에서 학번과 과목 번호가 기본키일 때, 새로운 학생 정보를 추가하려면 과목 번호를 알지 못하면 데이터를 삽입할 수 없음.
-
삭제 이상 (Deletion Anomaly)
- 문제: 특정 데이터를 삭제하면 관련 없는 중요한 정보도 함께 삭제되는 경우.
- 예시:
특정 과목에 대한 수강 기록을 삭제할 때, 해당 학생의 학년 정보도 함께 삭제됨.
-
갱신 이상 (Update Anomaly)
- 문제: 데이터를 갱신할 때 중복된 데이터의 일부만 갱신되어 데이터 불일치가 발생하는 경우.
- 예시:
수강 테이블에서 학번 400번 학생의 학년을 3학년으로 변경할 때, 일부 튜플만 변경되어 정보가 불일치함.
이상의 해결 방법
- 정규화(Normalization): 테이블을 작은 논리적 단위로 분리하여 데이터 중복과 종속성을 줄이는 과정.
2. 함수적 종속 (Functional Dependency)
정의
- 하나의 속성 값이 다른 속성 값을 고유하게 결정할 수 있는 관계.
- 표기법:
X → Y
- X: 결정자(Determinant)
- Y: 종속자(Dependent)
특징
- X의 값이 고유하다면 Y의 값도 항상 고유하게 결정됨.
- 결정자: 데이터를 결정하는 속성(또는 속성 집합).
- 종속자: 결정자의 값에 의해 결정되는 속성(또는 속성 집합).
예제
-
학생 테이블
학번 → 이름, 학년, 학과
- 학번(결정자) 하나로 이름, 학년, 학과(종속자)를 결정할 수 있음.
-
수강 테이블
학번, 과목 번호 → 성적
학번 → 학년
- 학번과 과목 번호를 결합해야 성적을 고유하게 결정 가능(완전 함수적 종속).
- 학번 하나로 학년은 결정 가능(부분 함수적 종속).
3. 함수적 종속의 종류
1. 완전 함수적 종속 (Full Functional Dependency)
- 기본키 전체를 사용해야만 종속자를 고유하게 결정 가능.
- 예시:
학번, 과목 번호 → 성적
- 성적을 고유하게 결정하려면 학번과 과목 번호 둘 다 필요.
2. 부분 함수적 종속 (Partial Functional Dependency)
- 기본키의 일부 속성만으로도 종속자를 결정 가능.
- 예시:
학번 → 학년
- 기본키(학번, 과목 번호) 중 학번만으로 학년을 고유하게 결정 가능.
4. 이상과 함수적 종속의 관계
이상의 발생 원인
- 데이터의 불필요한 중복과 비정규형 구조로 인해 함수적 종속 관계가 제대로 유지되지 않음.
이상의 해결
- 함수적 종속 관계를 바탕으로 테이블을 분리(정규화)하여 이상을 방지.
- 데이터 무결성을 유지하면서 효율적으로 데이터를 관리.
5. 다음 단계: 정규화
- 이상을 해결하기 위해 테이블을 분리하는 정규화 과정에서 함수적 종속의 개념은 핵심.
- 목표: 데이터 중복을 최소화하고 무결성을 유지.
핵심 요약
- 이상: 데이터 중복으로 인해 발생하는 삽입, 삭제, 갱신의 비정상적 현상.
- 함수적 종속: 특정 속성이 다른 속성을 고유하게 결정하는 관계.
- 정규화: 이상을 제거하고 함수적 종속을 유지하기 위한 테이블 분리 과정.
다음 시간에는 정규화의 단계를 통해 테이블 구조를 개선하는 방법을 배울 것입니다.