되자!백엔드개발자
[DB기초] 무결성 제약조건 본문
https://cocoon1787.tistory.com/778 를 많이 참고했다.
데이터무결성(integrity)
데이터 베이스에 저장된 데이터의 일관성과 정확성을 지키는 것을 말한다.
- 정확성: 중복이나 누락이 없는 상태
- 일관성: 원인과 결과의 의미가 연속적으로 보장되어 변하지 않는 상태
데이터베이스에서 데이터 무결성 설계를 하지 않으면 테이블에 중복된 데이터 존재, 부모와 자식 데이터 간의 논리적 관계 깨짐, 잦은 에러와 재개발 비용 발생 등과 같은 문제가 발생할 것이다. 따라서DBMS에서 데이터 무결성이 유지되는 것은 중요한 사항이며, 주로 데이터에 적용되는 연산에 제한을 두어 데이터의 무결성을 유지한다.
1. 개체 무결성(Entity integrity)
기본 키 제약이라고 하며, 테이블은 기본키를 지정하고 그에 따른 무결성 원칙을 지켜야하는 조건이다.
- 기본 키(Primary Key)에는 Null 값이 올 수 없음
- 기본 키는 테이블 내에 오직 하나의 값만 존재해야 함
2. 참조 무결성(Referential integrity)
외래키 제약이라고도 하며, 테이블 간의 참조 관계를 선언하는 제약조건이다.
- 자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 도메인이 동일해야함
- 자식 릴레이션의 값이 변경될 때 부모릴레이션의 제약을 받음
3. 도메인 무결성(Domain integrity)
테이블에 존재하는 필드의 무결성을 보장하기 위한 것으로 필드의 타입, Null값 허용 등에 대한 사항을 정의하고 올바른 데이터가 입력되었는지 확인하는 조건이다.
무결성 제약조건의 수행
릴레이션은 데이터 변경이 일어날 때 제약조건에 위배될 수 있다. 따라서 제약 조건의 준수 여부는 데이터 변경(삽입, 수정, 삭제)이 있을 때마다 확인해야한다.
1. 개체 무결성 제약조건 확인
- 삽입
기본키 값이 같은 것이 있는지, Null값인지 확인한다. 위배될 때 삽입 거부. - 수정
기본키 값이 같거나 Null로 변경하려는 경우 수정 거부 - 삭제
특별한 확인이 필요하지 않으며 즉시 수행. 단, 참조 무결성 제약조건에 의하여 학생 릴레이션의 기본키를 다른 릴레이션에서 외래키로 참조하고 있으면 바로 삭제하지 않는다.
2. 참조 무결성 제약조건 확인
- 삽입
- 부모릴레이션 : 개체 무결성 제약조건에 위배되지 않으면 삽입이 정상적으로 진행.
- 자식릴레이션 : 개체 무결성 제약조건 뿐만 아니라, 외래키에 해당하는 속성이 외래키 도메인에 존재하는지 추가로 확인.
- 삭제
- 부모릴레이션 : 참조하는 테이블을 같이 삭제할 수 있어서 다른 조치(표 참고)를 취하거나, 아예 금지시킴.
- 자식 릴레이션 : 특별한 확인이 필요하징 않으며 즉시 수행.
명령어 | 의미 |
RESTRICTED | 자식 릴레이션에서 참조하고 있을 경우 부모 릴레이션의 삭제 작업을 거부 |
CASCADE | 자식 릴레이션의 관련 투플을 같이 삭제 처리 |
DEFAULT | 자식 릴레이션의 관련 투플을 미리 설정해둔 값으로 변경 |
NULL | 자식 릴레이션의 관련 투플을 NULL값으로 설정 (NULL 값을 허가한 경우) |
- 수정
삭제와 삽입 명령이 연속해서 수행된다.
'개발공부 > DB기초' 카테고리의 다른 글
[DB기초] Eclipse에서 SQL파일(.sql) 여는 방법 (0) | 2022.09.28 |
---|---|
[DB기초] DDL, DML, DCL의 정의 (0) | 2022.09.25 |
[DB기초] MySQL과 Oracle에서의 짝수,홀수 (0) | 2022.09.13 |
[DB기초] 관계대수, Join의 종류, 디비전(division) (0) | 2022.09.10 |
[DB기초] 관계형 데이터베이스 용어 - 키(key) (0) | 2022.09.09 |