본문 바로가기
Database

[Database] 관계 데이터 모델과 관계 데이터베이스 제약조건

by spareone 2025. 4. 29.

개념적 세계에서는 ER 모델을 표현하여 엔티티를 표현했습니다.

논리적 세계에서는 관계 모델을 이용해 relation(릴레이션)을 표현합니다.

릴레이션은 테이블의 형태를 띄며, 튜플(행, 레코드)의 집합입니다.

정리하자면 다음과 같습니다.

  • 테이블 : 릴레이션
  • 행 : 튜플
  • 열 : 애트리뷰트 (속성)
[그림 1] 릴레이션 예시

릴레이션에 관련된 용어들인데, 일부는 ER 모델링 용어와 공유합니다.

  • 도메인 : 원자 값의 범위
  • 릴레이션 스키마 : 릴레이션과 애트리뷰트의 집합
  • 릴레이션 차수 : 릴레이션 애트리뷰트 개수
  • 릴레이션 튜플
  • 릴레이션 상태

릴레이션 튜플 순서는 의미가 없습니다.


릴레이션이 모두 만족해야 하는 제약조건이 존재합니다.

제약조건의 구성은 다음과 같습니다.

  1. 도메인 제약조건
  2. 키 제약조건
  3. 엔티티 무결성 제약조건
  4. 참조 무결성 제약조건

하나씩 살펴보면 이렇습니다.

1. 도메인 제약조건

  • 한 애트리뷰트의 값은 그 애트리뷰트에 있는 하나의 원자 값이다. (복합 애트리뷰트가 아니다)
  • 한 애트리뷰트 값은 반드시 해당 애트리뷰트 도메인에 속하는 원자 값이어야 한다.

2. 키 제약조건

  • 모든 튜플에 대해서 키 애트리뷰트의 값은 서로 달라야 한다.
  • 키가 무엇인지 정의하기 위해서는 슈퍼키의 정의가 필요합니다.
  • 튜플을 구별하기 위해 설계자는 키 후보 중에서 하나를 임의로 골라 식별자로 사용하는데, 이를 기본키라고 합니다.
  • 기본 키로 지정되지 않은 키는 보조키(유일키, 선택키)라고 합니다.
  • 정리하자면 다음과 같습니다.
    • 슈퍼키 : 모든 튜플 중에서 서로 다른 값을 가지는 애트리뷰트들의 집합
    • 키(=후보키) : 슈퍼키 중에서 없어도 되는 애트리뷰트가 없는 슈퍼키
    • 기본 키 : 식별자로 사용하기 위해 설계자가 임의로 정한 키
    • 보조키, 유일키, 선택키 : 기본 키로 지정되지 않은 키

3. 엔티티 무결성 제약조건

  • 기본키의 값은 NULL이 될 수 없습니다.
  • 기본키가 NULL을 가지게 되면 튜플을 구별할 수 있는 수단이 존재하지 않기 때문입니다.

4. 참조 무결성 제약조건

  • 튜플이 다른 튜플을 참조할 때, 참조되는 튜플이 반드시 존재해야 합니다.

릴레이션을 조작하다 보면 제약조건이 위반되는 경우가 있습니다.

이럴 때는 제약조건에 맞을 수 있도록 적절한 조치를 취하는 액션을 지정해야 합니다.

릴레이션의 기본 갱신 연산은 삽입, 삭제, 수정입니다. 연산 후 제약조건을 위반하지 않는 게 가장 좋지만, 위반하였을 경우 다음과 같은 처리 방안을 강구해야 합니다.

1. 삽입 연산

  • 도메인에 맞지 않는 값 삽입 (도메인 제약조건 위반)
  • 동일한 기본 키 삽입 (키 제약조건 위반)
  • 기본 키 값을 NULL로 삽입 (엔티티 무결성 제약조건 위반)
  • 외래 키의 값이 참조되는 릴레이션의 키 값으로 존재하지 않음 (참조 무결성 제약조건 위반)
  • 제약 조건 위반 시 액션
    • 해당 값 삽입 거부
    • 위반 사실을 사용자에게 통보

2. 삭제 연산

  • 튜플을 삭제하는 경우, 다른 테이블에서 참조하고 있는지 검사한 뒤 그렇지 않은 경우만 삭제 (참조 무결성 제약조건 때문)
  • 제약 조건 위반 시 액션
    • 삭제를 거부하거나
    • 삭제되는 튜플을 참조하는 튜플들까지 모두 삭제하거나 (연쇄 삭제)
    • 삭제되는 튜플을 참조하는 튜플에서 외래키 값을 NULL로 변경하거나 다른 튜플을 참조하도록 변경

3. 수정 연산

  • ‘삭제 후 삽입’ 연산으로 간주될 수 있기 때문에 위 두가지 문제점이 모두 나타날 수 있습니다.

'Database' 카테고리의 다른 글

[Database] SQL(2) | DML – SELECT(1)  (0) 2025.04.29
[Database] SQL(1) | DDL  (0) 2025.04.29
[Database] E-R 개념적 데이터 모델링  (0) 2025.04.29
[Database] 데이터베이스 시스템  (0) 2023.04.18
[Database] 데이터베이스 개요  (1) 2023.04.17

댓글