[데이터베이스] 관계형 데이터베이스 제약 조건-키(Key), 무결성(Integrity)

2023. 10. 29. 02:19CS/데이터베이스

 

제약 조건

 

제약 조건이란 데이터베이스에 저장되는 데이터의 정확성을 보장하기 위해 키(Key)를 이용하여 입력되는 데이터에 제한을 주는 것으로 개체 무결성, 참조 무결성, 도메인 무결성, 사용자 정의 무결성이 있다.

 

키 (Key)

 

키(Key)는 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 튜플을 서로 구분할 수 있는 기준이 되는 속성을 말한다. 키의 종류에는 후보키, 기본키, 대체키, 슈퍼키, 외래키 등이 있다.

 

 

후보키(Candidate Key)

  • 릴레이션을 구성하는 속성들 중 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합, 즉 기본키로 사용할 수 있는 속들을 말한다.
  • 하나의 릴레이션 내에서는 중복된 튜플들이 있을 수 없으므로 모든 릴레이션에는 반드시 하나 이상의 후보키가 존재한다.
  • 후보키는 릴레이션에 있는 모든 튜플에 대해서 유일성최소성을 만족시켜야한다.
  • <학생> 릴레이션에서 '학번'이 다른 레코드를 유일하게 구별할 수 있는 기본키로 사용할 수 있으므로 후보키다.
유일성(Unique) : 하나의 키 값으로 하나의 튜플만을 유일하게 식별 가능한 성질
최소성(Minimality) : 모든 레코드들을 유일하게 식별하는 데 꼭 필요한 속성으로만 구성되어야 하는 성질

 

기본키(Primary Key)

  • 후보키 중에서도 특별히 선정되는 키이며 중복된 값을 가질 수 없다.
  • 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성이다.
  • 기본키는 후보키의 성질인 유일성과 최소성을 가지며 튜플의 식별에 반드시 필요한 키이다.
  • 기본키는 NULL 값을 가질 수 없다. 
  • <학생> 릴레이션에서는 '학번'이 기본키가 될 수 있고, <강의> 릴레이션에서는 '학번+강의'로 조합해야 기본키가 된다.

 

대체키(Alternate Key)

  • 후보키가 둘 이상일 때 기본키를 제외한 후보키를 의미한다.
  • 만약 <학생> 릴레이션에서 '학번'을 제외한 후보키가 하나 더 있고 '학번'이 기본키라면 '학번'을 제외한 후보키는 대체키다.

 

슈퍼키(Super Key)

  • 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키이며 릴레이션을 구성하는 모든 튜플들 중 슈퍼키로 구성된 속성의 집합과 동일한 값을 나타나지 않는다.
  • 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족시키지만, 최소성은 만족시키지 못한다.
  • <학생> 릴레이션에서는 '학번'. '학번+이름', '학번+이름+학년' 등의 조합으로 슈퍼키를 구성할 수 있다.

 

외래키(Foreign Key)

  • 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합을 의미한다.
  • 참조되는 릴레이션의 기본키와 대응되어 릴레이션 간에 참조 관계를 표현한다.
  • 외래키로 지정되면 참조 릴레이션의 기본키에 없는 값은 입력할 수 없다.
  • <강의> 릴레이션이 <학생> 릴레이션을 참조하고 있으므로 <학생> 릴레이션의 '학번'은 기본키이고, <수강> 릴레이션의 '학번'은 외래키이다.
  • <강의> 릴레이션의 '학번'에는 <학생> 릴레이션의 '학번'에 없는 값은 입력할 수 없다.

 

무결성 (Integrity)

 

무결성이란 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제값이 일치하는 정확성을 뜻한다. 이는 데이터의 정확성을 보장하기 위해 데이터베이스에 부정확한 자료가 저장되는 것을 방지하기 위한 제약 조건이다. 무결성의 종류에는 개체 무결성, 도메인 무결성, 참조 무결성, 사용자 정의 무결성 등이 있다.

 

개체 무결성 (Entity Integrity)

: 개체 무결성은 기본 테이블의 기본키를 구성하는 어떤 속성도 NULL 값이나 중복값을 가질 수 없다는 규정이다. 즉, UNIQUE & NOT NULL의 성질을 가진다.

 

도메인 무결성 (Domain Integrity)

: 도메인 무결성은 주어진 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정이다.

 

참조 무결성 (Referential Integrity)

: 참조 무결성은 외래키값은 NULL값이거나 참조 릴레이션의 기본키 값과 동일해야 한다. 즉, 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다는 규정이다.

 

사용자 정의 무결성 (User Defined Integrity)

: 사용자 정의 무결성은 속성 값들이 사용자가 정의한 제약 조건에 만족해야 한다는 규정이다.