1. 릴레이션(Relation)의 개념
1) 수학적 정의
- 릴레이션: 카티션 프로덕트(Cartesian Product)인 D1×D2×…×Dn 의 부분집합
- n-투플: , di ∈ Di
- 차수(degree): 릴레이션의 속성 개수
- 카디널리티(cardinality): 릴레이션의 투플(행)의 수
2) 개념적 정의
- 릴레이션 스키마: 릴레이션의 구조와 속성 이름 정의
- 표기법: 릴레이션이름(속성1, 속성2, ..., 속성N)
- 정적 성질 (내포, Intension)
- 릴레이션 인스턴스: 특정 시점의 릴레이션 데이터를 의미
- 삽입, 삭제, 갱신에 따라 동적으로 변화 (외연, Extension)
2. 릴레이션의 특성
- 투플의 유일성:
- 릴레이션 내에 동일한 투플이 존재할 수 없음.
- 키(key)를 통해 보장.
- 투플의 무순서성:
- 투플들의 순서는 중요하지 않음.
- 애트리뷰트(속성)의 무순서성:
- 애트리뷰트 순서가 다르더라도 동일 릴레이션으로 간주.
- 속성의 원자성:
- 각 속성 값은 더 이상 분해되지 않는 원자 값이어야 함.
- 기타:
- 하나의 릴레이션은 한 가지 레코드 타입만 포함.
- 속성의 데이터 타입은 동일해야 함.
- 속성 이름은 릴레이션 내에서 고유해야 함.
3. 릴레이션의 키
1) 키의 정의
- 릴레이션에서 투플을 고유하게 식별할 수 있는 속성(또는 속성 집합).
2) 키의 유형
- 수퍼키(Super Key):
- 투플을 고유하게 식별할 수 있는 속성 집합.
- 유일성을 만족하지만 최소성을 보장하지 않음.
- 예: (회원번호, 주민등록번호), (회원번호, 등급)
- 후보키(Candidate Key):
- 투플을 고유하게 식별하는 최소한의 속성 집합.
- 유일성과 최소성을 만족.
- 릴레이션에는 최소 한 개 이상의 후보키 존재.
- 예: (회원번호), (주민등록번호)
- 기본키(Primary Key):
- 후보키 중 릴레이션에서 대표로 선정된 키.
- NULL 값을 가질 수 없음.
- 예: 신용카드번호
- 대체키(Alternate Key):
- 후보키 중 기본키로 선정되지 않은 키.
- 예: 주민등록번호 (기본키가 신용카드번호인 경우)
- 외래키(Foreign Key):
- 다른 릴레이션의 기본키를 참조하는 속성.
- 참조하는 릴레이션의 기본키와 동일한 도메인.
- 값은 참조되는 기본키 값이거나 NULL.
3) 키들의 포함 관계
- 수퍼키 ⊇ 후보키 ⊇ 기본키
4. 무결성 제약
1) 데이터 무결성
- 데이터의 정확성과 유효성을 보장.
- 데이터베이스 상태가 일관성을 유지하도록 조건 설정.
- DBMS가 자동으로 검사하여 응용 프로그램에서 별도로 확인할 필요가 없음.
2) 개체 무결성 제약조건 (Entity Integrity Constraint)
- 기본키 속성은 NULL 값을 가질 수 없음.
- NULL 값 의미:
- 값이 알려지지 않음 (unknown value)
- 해당 없음 (inapplicable)
3) 참조 무결성 제약조건 (Referential Integrity Constraint)
- 외래키 값은 반드시 참조되는 릴레이션의 기본키 값이거나 NULL이어야 함.
- 외래키와 기본키 사이 관계:
- 외래키 값 ∈기본키 값
- 또는 외래키 값 = NULL
무결성 제약 유지 시 고려사항
- 삽입:
- 참조하는 릴레이션에 존재하지 않는 값을 삽입하면 제약조건 위배.
-
- 삭제:
- 참조되는 투플 삭제 시 다른 릴레이션의 무결성 위배 가능.
참조 무결성을 유지하기 위한 DBMS 옵션
- 제한(Restricted)
- 동작: 참조 무결성을 위배하는 연산을 단순히 거절합니다.
- 예:
- 상황: 부서 릴레이션에서 (3, 개발, 9)를 삭제하려고 함.
- 문제: 부서번호 3을 참조하는 사원 릴레이션의 레코드(박영권, 최종철)가 존재.
- 결과: 삭제 연산이 거절됨.
- 연쇄(Cascade)
- 동작: 참조되는 릴레이션의 레코드 삭제 시, 이를 참조하는 릴레이션의 레코드도 자동으로 삭제합니다.
- 예:
- 상황: 부서 릴레이션에서 (3, 개발, 9)를 삭제하려고 함.
- 문제: 부서번호 3을 참조하는 사원 릴레이션의 레코드(박영권, 최종철)가 존재.
- 결과: 부서 릴레이션의 (3, 개발, 9)와 함께 사원 릴레이션의 해당 레코드들도 모두 삭제됨.
- NO ACTION (= Restricted)
- 동작: 참조 무결성을 위배하는 연산을 거절합니다(제한 옵션과 동일한 동작).
- 예:
- 상황: 부서 릴레이션에서 (3, 개발, 9)를 (5, 개발, 9)로 변경하려고 함.
- 문제: 사원 릴레이션에서 부서번호 3을 참조하는 레코드(박영권, 최종철)는 변경되지 않음.
- 결과: 변경 연산이 거절됨.