DataBase

무결성 제약 조건

Z00_HWAN_99 2024. 7. 22. 14:06
728x90
반응형

  • 특정 투플을 식별할 때 사용하는 속성 혹은 속성의 집합.
  • 릴레이션은 중복된 투플을 허용하지 않기 때문에 각각의 투플에 포함된 속성들 중 어느 하나(혹은 하나 이상)는 값이 달라야 함. 즉, 키가 되는 속성(혹은 속성의 집합)은 반드시 값이 달라서 투플들을 서로 구별할 수 있어야 함.
  • 키는 릴레이션 간의 관계를 맺는 데도 사용.

슈퍼키

  • 투플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성의 집합.
    • 투플을 유일하게 식별할 수 있는 값이면 모든 슈퍼키가 될 수 있음.

후보키

  • 투플을 유일하게 식별할 수 있는 속성의 최소 집합.
  • 참고로 2개 이상의 속성으로 이루어진 키를 복합키(composite key)라고 함.

기본키

  • 여러 후보키 중 하나를 선정하여 대표로 삼는 키.
  • 후보키가 하나뿐이라면 그 후보키를 기본기로 사용하면 되고, 여러 개라면 릴레이션의 특성을 반영하여 하나를 선택하면 됨.
  • 기본키 선정 시 고려사항
    • 릴레이션 내 투플을 식별할 수 있는 고유한 값(UNIQUE)을 가져야 함.
    • NULL 값은 허용하지 않음.
    • 키 값의 변동이 일어나지 않아야 함.
    • 최대한 적은 수의 속성을 가진 것이어야 함.
    • 향후 키를 사용하는데 있어서 문제 발생 소지가 없어야 함.

대리키

  • 기본키가 보안을 요하거나, 여러 개의 속성으로 구성되어 복잡하거나, 마땅한 기본키가 없을 때는 일련번로 같은 가상의 속성을 만들어 기본키로 삼는 경우가 있음. 이러한 키를 대리키(surrogate key) 혹은 인조키(artificial key)라고 함.
  • 대리키는 DBMS나 관련 소프트웨어에서 임의로 생성하는 값으로 사용자가 직관적으로 그 값의 의미를 알 수 없음.

대체키

  • 대체키(alternate key)는 기본키로 선정되지 않은 후보키를 말함.
  • 후보키 = 기본키 + 대체키

외래키

  • 다른 릴레이션의 기본키를 참조하는 속성을 말함. 다른 릴레이션의 기본키를 참조하여 관계 데이터 모델의 특징인 릴레이션 간의 관계(relationship)를 표현함.
  • 외래키의 특징
    • 관계 데이터 모델의 릴레이션 간의 관계를 표현함.
    • 다른 릴레이션의 기본키를 참조하는 속성임.
    • 참조하고(외래키) 참조되는(기본키) 양쪽 릴레이션의 도메인은 서로 같아야 함.
    • 참조되는(기본키) 값이 변경되면 참조하는(외래키) 값도 변경됨.
    • NULL 값과 중복 값 등이 허용됨.
    • 자기 자신의 기본키를 참조하는 외래키도 가능함.
    • 외래키가 기본키의 일부가 될 수 있음.
  • 외래키 사용 시 참조하는 릴레이션과 참조되는 릴레이션이 꼭 다른 릴레이션일 필요는 없음. 즉 자기 자신의 기본키를 참조할 수도 있음.

무결성 제약조건

  • 데이터 무결성(integrity)
    • 데이터베이스에 저장된 데이터의 일관성과 정확성을 지키는 것을 말함.
  • 도메인 무결성 제약 조건
    • 도메인 제약(domain constraint)이라고도 하며, 릴레이션 내의 투플들이 각 속성의 도메인에 지정된 값만을 가져야 한다는 조건.
    • SQL문에서 데이터 형식(type), 널(null, not null), 기본 값(default), 체크(check) 등을 사용하여 지정할 수 있음.
  • 개체 무결성 제약조건
    • 기본키 제약(primary key constraint)이라고도 함.
    • 릴레이션은 기본키를 지정하고 그에 따른 무결성 원칙. 즉, 기본키는 NULL 값을 가져서는 안되며 릴레이션 내에 오직 하나의 값만 존재해야 한다는 조건임.
  • 참조 무결성 제약조건
    • 외래키 제역(foreign key constraint)이라고도 하며, 릴레이션 간의 참조 관계를 선언하는 제약조건.
    • 자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 도메인 동일해야 하며, 자식 릴레이션의 값이 변경될 때 부모 릴레이션의 제약을 받는다는 것.

https://github.com/bottomsUp-99?tab=repositories

 

bottomsUp-99 - Overview

Backend Developer. bottomsUp-99 has 11 repositories available. Follow their code on GitHub.

github.com

 

 

728x90
반응형

'DataBase' 카테고리의 다른 글

Stored Procedure(저장 프로시저)  (0) 2024.08.08
정규화  (1) 2024.08.01
데이터 모델링  (2) 2024.08.01
관계 데이터 모델  (0) 2024.07.22
데이터베이스란  (2) 2024.07.22