[DB] 도메인, 참조 무결성

4132 단어 dbdb

🔒 도메인 제약 (domain constraints)

  • 가장 기초적인 형태의 무결성 제약 조건
  • 도메인 제약
    - 변수마다 타입을 지정함으로써, 변수가 가질 수 있는 값을 제한
    (정수형 변수는 실수형이나 문자열 값을 가질 수 없음)
  • 속성(attribute)이 가질 수 있는 값은 범위가 존재
    - 나이 값의 범위는 200을 넘을 수 없음
    (Int 선언 시 -23억 ~ 23억이므로 Check 옵션 or 데이터 타입 정의(create domain)

SQL에서 도메인 제약을 나타내는 방법

CREATE TABLE 대여 (
    테이프번호	char(7),
    고객번호	char(7),
    대여일자	date,
    대여시간	time,
    대여기간	integer
);

char(7), char(7), date, time, integer
대여기간은 integer 형으로 선언되었으므로, 0, 12, -5등은 들어갈 수 있지만, 10.52같은 실수형이나 'abc'같은 문자열은 들어갈 수 없다.


🔗 참조 무결성 (referential integrity)

참조 무결성 제약 조건이란
외래키인 속성의 값은 반드시 그 속성이 기본키가 되는 테이블에 나타나야 하며, NULL 값을 허용한다.

외톨이 투플(dangling tuples)

dangling 매달린, 흔들거리는
⇒ 다른 것과 결합(Join)하지 못하고 있다는 뜻

자연 조인을 할 때 결과에 전혀 참여하지 않는 투플



학생 테이블의 9902103 김예슬과 수강 테이블의 9902104 CS400이 외톨이 투플이다.

  • 자연 조인 시 결과 테이블에 포함되지 않는다.
  • 외부 조인 시 결과 테이블에 포함된다.
  1. 공통 속성이 기본키인 테이블에 있는 외톨이 투플 (9902103 김예슬)
    일어날 수 있는 경우이다.
    (학생이 수강하지 않았을 수 있으니 자연스러운 현상이다.)
  2. 공통 속성이 외래키인 테이블에 있는 외톨이 투플 (9902104 CS400)
    잘못된 외톨이 투플이므로 원인을 찾아 수정해야 한다.
    (가짜 학생이거나 학생 테이블에 학생 정보가 누락된 것이다.)

SQL에서 참조 무결성 나타내기

foreign key(외래키속성명) references 기본키테이블명

예시

CREATE TABLE 수강 (
    학번		char(9),
    과목번호	char(7),
    primary key(학번, 과목번호),
    
    foreign key(학번) references 학생,
    foreign key(과목번호) references 과목
);

좋은 웹페이지 즐겨찾기