무결성
: 데이터의 정확성 및 일관성
: 데이터에 결함이 없는 상태. 데이터를 정확하고 일관되게 유지하는 것
무결성 제약 조건 (Integrity Constraint)
: 데이터베이스의 정확성, 일관성을 보장하기 위해 저장, 삭제, 수정 등을 제야하기 위한 조건
- 목적
: 데이터베이스에 저장된 데이터의 무결성을 보장하고 데이터베이스의 상태를 일관되게 유지
- 개체 무결성
: 각 릴레이션의 기본키를 구성하는 속성을 NULL 값이나 중복된 값을 가질 수 없다
- 참조 무결성
: 외래키 값은 NULL이거나 참조하는 릴레이션의 기본키 값과 동일해야한다
: 즉, 각 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다
: FK는 NULL이어도 PK가 NULL이 되면 안된다 (FK에서 참조할 수 없기 때문)
- 도메인 무결성
: 속성들의 값은 정의된 도메인에 속한 값이어야 한다
- 고유 무결성
: 특정 속성에 대해 고유한 값을 가지도록 조건이 주어진 경우, 릴레이션의 각 튜플이 가지는 속성 값들은 서로 달라야 한다
- NULL 무결성
: 릴레이션의 특정 속성 값은 NULL이 될 수 없다
- 키 무결성
: 각 릴레이션은 최소한 한 개 이상의 키가 존재해야한다
참조 무결성 제약 설정
- ON DELETE
: 부모 데이터 삭제 시에 대한 참조 무결성 설정
- ON UPDATE
: 부모 데이터 갱신 시에 대한 참조 무결설 설정
- 예시
CREATE TABLE Enroll (
sno INT,
cno INT,
jdate date,
PRIMARY KEY(sno,cno),
FOREIGN KEY(sno)
REFERENCES Student(sno)
ON DELETE CASCADE
FOREIGN KEY(cno)
REFERENCES Course(cno)
ON DELETE CASCADE
);
: Student 테이블의 sno 속성과 Course 테이블의 cno 속성을 Enroll 테이블의 sno 및 cno 속성에서 참조
: 부모 테이블은 Student 및 Course 테이블이 됨
ON DELETE
- CASCADE
: 부모 데이터 삭제 시 자식 데이터도 삭제
- SET NULL
: 부모 데이터 삭제 시 자식 테이블의 참조 컬럼을 NULL로 업데이트
- SET DEFAULT
: 부모 데이터 삭제 시 자식 테이블의 참조 컬럼을 Default 값으로 업데이트
- RESTRICT
: 자식 테이블이 참조하고 있을 경우 데이터 삭제 불가
: A 테이블의 name을 참조하고 있는데 B 테이블에서 RESTRICT를 걸면 A 테이블 삭제 불가
- NO ACTION
: 자식 테이블이 참조하고 있을 경우 데이터 삭제 불가. 옵션을 지정하지 않았을때 기본 값
ON UPDATE
- CASCADE
: 부모 데이터 업데이트 시 자식 데이터도 업데이트
- SET NULL
: 부모 데이터 업데이트 시 자식 테이블의 참조 컬럼을 NULL로 업데이트
- SET DEFAULT
: 부모 데이터 업데이트 시 자식 테이블의 참조 컬럼을 Default 값으로 업데이트
- RESTRICT
: 자식 테이블이 참조하고 있을 경우 데이터 업데이트 불가
: A 테이블의 name을 참조하고 있는데 B 테이블에서 RESTRICT를 걸면 A 테이블 업데이트 불가
- NO ACTION
: 자식 테이블이 참조하고 있을 경우 데이터 업데이트 불가. 옵션을 지정하지 않았을때 기본 값
Reference
'Database > MySQL' 카테고리의 다른 글
MySQL JSON_ARRAYAGG와 JSON_ARRAY의 차이점 (1) | 2023.10.10 |
---|---|
MySQL 서브 쿼리에 대해서 총 정리 (1) | 2023.10.10 |
MySQL 자동 증가와 주의점 (0) | 2023.09.23 |
데이터베이스 정규형 완전 정리 (0) | 2023.08.27 |
관계형 데이터베이스 설계 (1) | 2023.08.27 |