1. 데이터 무결성 제약조건 이란?
ㅇ 데이터베이스 테이블에 신뢰할 수 없는 데이터 입력을 못하도록 하는 제약조건
- 즉, 데이타베이스 내 데이터의 무결성(일관성,신뢰보장)을 위해,
- DBMS 기능을 통해 정의,유지,감시코자 데이터들에게 부과하는 조건들
ㅇ 실세계적인 관점에서는, 이를 업무 규칙(Business Rule) 이라고도 함
2. 데이터 무결성의 구분
ㅇ 도메인 무결성 (SQL 구현 : CHECK,DEFAULT,NOT NULL 등)
- 열(列)의 값들은, 일관성을 가져야 하며, 업무 규칙에 부합되어야 함
. 특정 열의 속성별 범위 값 제한 규정
. (例, 남/여,true/false 등 만 가능, NULL 허용 여부)
* 즉, 자료형,값 범위 등을 제한
ㅇ 개체 무결성 (SQL 구현 : 기본키,UNIQUE)
- 기본키에는, 중복이 없으며 널값을 허용 안함
. (例, 단일 테이블 내 중복 레코드가 존재 않도록 하는 것 등 즉, 주민등록번호 등)
* 즉, 유일한 식별자를 가질 것을 요구
ㅇ 참조 무결성 (SQL 구현 : 외래키)
- 타 테이블과 연관된 데이터가, 입력,수정,삭제 시에도 데이터 간에 정확한 참조관계를 유지시킴
. (例, 존재 않는 값에 대한 참조를 허용하지 않는 등)
* 즉, 기본 키와 외래 키 간의 관계가 항상 정확하게 유지됨을 보장
3. 데이터 무결성의 적용 방법
ㅇ 선언적 방법 (Declarative)
- 테이블과 컬럼 등을 정의할때, 데이터 무결성 조건을 함께 선언하여 정의하는 방법
ㅇ 서술적 방법 (Descriptive)
- 선언적 방법으로 구현하기 어려운 복잡한 업무 규칙을 적용할 때 사용
- 주로, 트리거나 스토어드 프로시저와 같은 스크립트 형태로 정의함
4. 데이터 무결성의 적용 형태
ㅇ 도메인 무결성 (Domain Integrity) 제약조건
- CHECK
. 열의 값이 일정 범위 값으로 제한 (例, 남/여,true/false 등 만 가능)
- DEFAULT
. 테이블 열에 기본값을 지정해 둠
- NOT NULL
. 반드시 값이 입력되어야 함
ㅇ 개체 무결성 (Entity Integrity) 제약조건
- PRIMARY KEY (기본키)
. 기본키로 지정한 열의 값이, 중복이 없어야 하고(즉,유일성,unique), NULL 값을 허용 안함
- UNIQUE
. 테이블 열의 값을 항상 고유하게(중복 없도록) 함
ㅇ 참조 무결성 (Referential Integrity) 제약조건
- FOREIGN KEY (외래키)
. 외래키는 참조 릴레이션의 기본키 값이거나 널 값 만 가능
5. 제약 조건 적용 例) (MySQL 경우)
ㅇ 제약조건 확인
- DESC (데이터베이스명).(테이블 명);
ㅇ 제약조건 추가
- 기본키 (개체무결성)
. ALTER TABLE (부모테이블명) ADD CONSTRAINT (제약조건명) PRIMARY KEY (컬럼명);
- 외래키 (참조무결성)
. ALTER TABLE (자식테이블명) ADD CONSTRAINT (제약조건명) FOREIGN KEY (컬럼명)
REFERENCES (부모테이블명) (PK 컬럼명) [ON DELETE CASCADE / ON UPDATE CASCADE];
.. ON DELETE CASCADE : 부모테이블의 기본키 삭제시, 자식테이블에서도 같이 삭제
.. ON UPDATE CASCADE : 부모테이블의 기본키 업데이트시, 자식테이블에서도 같이 업데이트
- (NOT NULL)
. ALTER TABLE (테이블명) MODIFY (컬럼명) (데이터타입) CONSTRAINT (제약조건명) NOT NULL;
ㅇ 제약조건 삭제
- 제약조건명 있으면, 해당 제약조건 삭제
. ALTER TABLE (부모테이블명) DROP CONSTRAINT (제약조건명);
- FOREIGN KEY 삭제
. ALTER TABLE (자식테이블명) DROP FOREIGN KEY (제약조건명);