데이터베이스 무결성: 개체, 참조, 속성, 사용자, 키
요약
데이터베이스의 정확성과 일관성을 보장하는 5가지 무결성(개체, 참조, 속성, 사용자, 키)의 개념과 예시를 알아보고, 정보처리기사 실기 대비 문제로 학습을 마무리합니다.
데이터베이스 무결성 종류 요약
데이터베이스 무결성은 데이터의 정확성, 일관성, 유효성을 유지하는 것을 의미합니다. 데이터베이스의 신뢰도를 높이기 위해 다양한 제약조건을 사용합니다.
구분 | 핵심 키워드 | 설명 |
---|---|---|
개체 무결성 | PRIMARY KEY | 기본키는 NULL 값을 가질 수 없으며, 릴레이션 내에서 유일해야 합니다. |
참조 무결성 | FOREIGN KEY | 외래키 값은 참조 릴레이션의 기본키 값이거나 NULL 이어야 합니다. |
속성(도메인) 무결성 | DOMAIN , CHECK , DEFAULT | 속성 값은 정의된 도메인(데이터 타입, 범위 등)에 속해야 합니다. |
사용자 무결성 | TRIGGER | 사용자가 비즈니스 규칙에 맞게 직접 정의하는 무결성 조건입니다. |
키 무결성 | UNIQUE | 하나의 릴레이션에 동일한 키 값을 가진 튜플이 존재할 수 없습니다. |
1. 개체 무결성 (Entity Integrity)
개체 무결성은 릴레이션의 모든 튜플(행)이 서로 구별될 수 있도록 보장하는 제약조건입니다. 이를 위해 기본키(Primary Key)를 사용하며, 기본키는 다음 두 가지 조건을 반드시 만족해야 합니다.
NULL
값을 가질 수 없습니다. (Not Null)- 릴레이션 내에서 유일한 값을 가져야 합니다. (Unique)
- 예시:
학생
테이블에서학번
을 기본키로 설정하면, 모든 학생은 고유한 학번을 가져야 하며 학번이 없는 학생 데이터는 존재할 수 없습니다.
2. 참조 무결성 (Referential Integrity)
참조 무결성은 두 릴레이션 간의 관계가 항상 유효하도록 보장하는 제약조건입니다. 외래키(Foreign Key)를 사용하여 이를 강제하며, 외래키는 참조하는 릴레이션의 기본키 값 중 하나이거나 NULL
값을 가져야 합니다.
- 예시:
수강
테이블의학번
은학생
테이블의학번
을 참조하는 외래키입니다. 따라서수강
테이블에 입력되는학번
은 반드시학생
테이블에 존재하는 학번이어야 합니다. 존재하지 않는 학생의 수강 정보를 입력할 수 없습니다.
3. 속성(도메인) 무결성 (Attribute (Domain) Integrity)
속성(도메인) 무결성은 릴레이션의 각 속성(열) 값이 유효한 값의 범위(도메인)에 속하도록 보장하는 제약조건입니다. 데이터 타입, NULL
허용 여부, 기본값, CHECK
제약조건 등을 통해 설정할 수 있습니다.
- 예시:
학생
테이블에서성적
속성의 값은 0에서 4.5 사이의 숫자만 허용하고,성별
은 '남' 또는 '여'만 입력되도록 강제할 수 있습니다.
4. 사용자 무결성 (User-Defined Integrity)
사용자 무결성은 특정 비즈니스 규칙이나 조직의 정책을 데이터베이스에 적용하기 위해 사용자가 직접 정의하는 제약조건입니다. 주로 트리거(Trigger) 를 사용하여 구현됩니다.
- 예시:
상품
테이블에서 상품의 재고가 10개 미만으로 떨어지면, 자동으로재주문
테이블에 해당 상품 정보를 추가하는 규칙을 만들 수 있습니다.
5. 키 무결성 (Key Integrity)
키 무결성은 릴레이션의 모든 튜플이 고유한 키 값을 갖도록 보장하는 제약조건입니다. 기본키(Primary Key) 제약조건은 개체 무결성과 키 무결성을 모두 포함하지만, UNIQUE
제약조건을 사용하여 기본키가 아닌 속성에도 유일성을 강제할 수 있습니다.
- 예시:
회원
테이블에서이메일
은 기본키는 아니지만, 모든 회원이 서로 다른 이메일 주소를 갖도록UNIQUE
제약조건을 설정할 수 있습니다.
정보처리기사 실기 대비 문제
기출 | |||||||||||||
문제 | [학생]테이블
위 '학생' 테이블은 어떤 무결성 제약조건을 위반했는가?(단 학번이 기본키이다.) | ||||||||||||
답변 | |||||||||||||
정답 | 정답 보기 |
기출 | |||||||||||||||||
문제 |
위 표의 1, 2, 3 무결성 제약조건은 각각 무엇인가? | ||||||||||||||||
답변 | 1: 2: 3: | ||||||||||||||||
정답 | 정답 보기 |
문제 | 기본키는 NULL 값을 가질 수 없으며, 릴레이션 내에서 유일한 값을 가져야 한다는 제약조건은 무엇인가? |
답변 | |
정답 | 정답 보기 |
문제 | 외래키 값은 참조하는 릴레이션의 기본키 값이거나 NULL이어야 한다는 제약조건은 무엇인가? |
답변 | |
정답 | 정답 보기 |
문제 | 속성 값이 미리 정의된 데이터 타입이나 범위에 속해야 한다는 제약조건은 무엇인가? |
답변 | |
정답 | 정답 보기 |