관계형 데이터베이스의 무결성 제약 조건
관계형 데이터베이스의 무결성은 저장된 데이터가 현실 세계를 정확히 반영하고, 데이터의 일관성과 정확성을 보장하기 위한 제약 조건을 의미합니다. 이를 통해 잘못된 데이터의 입력이나 데이터 손상을 방지하고 데이터베이스의 품질을 유지할 수 있습니다.
1. 무결성(Integrity)의 정의
- 데이터베이스에 저장된 데이터가 정확하고 일관되며 신뢰할 수 있는 상태를 유지하는 것을 의미.
- 목적: 데이터의 정확성과 일관성 보장.
2. 무결성 제약 조건의 종류
무결성은 다양한 제약 조건으로 구분되며, 이를 통해 데이터의 품질과 유효성을 유지합니다.
(1) 개체 무결성 (Entity Integrity)
- 정의:
- 기본 키(Primary Key)를 구성하는 모든 속성은 NULL 값이나 중복 값을 가질 수 없음.
- 예시:
- 학생 테이블에서
학번
은 모든 학생을 고유하게 식별해야 하므로, 중복 값이 있거나 NULL 값을 가질 수 없음.
- 목적:
(2) 참조 무결성 (Referential Integrity)
- 정의:
- 외래 키(Foreign Key)는 NULL 값이거나 참조하는 테이블의 기본 키 값과 동일해야 함.
- 예시:
- 수강 테이블의
학번
은 학생 테이블의 기본 키 학번
을 참조.
- 수강 테이블에
학번: 1005
를 입력하려면, 학생 테이블에 학번: 1005
가 반드시 존재해야 함.
- 목적:
(3) 도메인 무결성 (Domain Integrity)
- 정의:
- 각 속성(Attribute)은 정의된 도메인(값의 범위) 내에서만 값을 가질 수 있음.
- 예시:
성별
속성의 값은 남
또는 여
만 허용.
학년
속성의 값은 대학교 기준으로 1~4
사이의 값만 허용.
- 목적:
- 데이터의 형식과 값 범위를 제한하여 잘못된 데이터 입력 방지.
(4) 사용자 정의 무결성 (User-Defined Integrity)
- 정의:
- 사용자가 데이터베이스에 특정 비즈니스 규칙을 정의하여 적용.
- 예시:
- 한 과목의 최대 수강 인원은 50명으로 제한.
- 목적:
(5) NULL 무결성
- 정의:
- 특정 속성의 값이 NULL 값을 가질 수 없도록 제한.
- 예시:
- 목적:
(6) 고유 무결성 (Unique Integrity)
- 정의:
- 특정 속성의 값은 모든 튜플에서 고유해야 함.
- 예시:
- 주민등록번호 속성은 모든 학생에서 고유해야 함.
- 목적:
(7) 키 무결성 (Key Integrity)
- 정의:
- 각 릴레이션(Relation)은 최소 하나 이상의 키(Key)를 가져야 함.
- 예시:
- 학생 테이블에서
학번
또는 주민등록번호
를 기본 키로 지정.
- 목적:
(8) 관계 무결성 (Relational Integrity)
- 정의:
- 두 릴레이션 간의 관계에서 튜플 삽입, 삭제, 갱신 시 적합성 여부를 보장.
- 예시:
- 수강 테이블에 있는 학번은 반드시 학생 테이블에 존재해야 함.
- 목적:
3. 무결성 유지와 강화 방법
(1) 애플리케이션
- 데이터 입력, 수정, 삭제 시 무결성 조건을 검증하는 코드를 애플리케이션에 포함.
- 예시:
- 성별 입력 시
남
또는 여
만 허용하는 코드 작성.
(2) 데이터베이스 트리거 (Trigger)
- 특정 이벤트(입력, 갱신, 삭제 등) 발생 시 자동으로 실행되는 절차적 SQL 코드.
- 예시:
- 학생이 수강신청 시 수강 과목의 인원이 초과하지 않도록 검증.
(3) 제약 조건
- 데이터베이스 수준에서 제약 조건(Constraints)을 설정.
- 예시:
- 기본 키, 외래 키, 고유 키, 체크(값 범위) 제약 조건 설정.
4. 시험 대비 주요 포인트
- 무결성 제약 조건의 종류와 정의:
- 개체 무결성, 참조 무결성, 도메인 무결성 등.
- 각 무결성 제약 조건의 목적과 적용 예시:
- 무결성 강화 방법:
- 애플리케이션, 트리거, 제약 조건의 차이와 활용.
5. 결론
- 무결성 제약 조건은 데이터베이스의 정확성과 신뢰성을 보장하는 핵심 요소입니다.
- 데이터를 설계하고 관리할 때, 각 무결성 제약 조건을 적절히 적용하여 데이터 품질을 유지하고 잘못된 데이터 입력을 방지해야 합니다.