728x90
데이터 무결성
- 데이터베이스의 장점
- 데이터 공유 및 용이한 접근
- 데이터 중복 최소화, 일관성, 무결성, 보안성 유지
- 데이터의 표준화 가능
- 데이터의 저장 공간 절약 및 집중화
- 데이터 무결성
- 데이터베이스에 저장된 데이터의 일관성과 정확성을 유지하는 것
- 일관성과 정확성이 없는 데이터베이스는 정보로서 부적격하다.
- 유지 방법
- 투플의 삽입, 삭제, 수정시 데이터의 제약 조건을 준수하는지 확인하여야 한다.
- 예 : 쇼핑몰에서 회원이 탈퇴한 경우
- 탈퇴한 회원 정보를 삭제하면, 회원이 구매한 정보에 문제가 발생
- 구매내역까지 삭제하면, 쇼핑몰의 총 매출에 문제가 발생
- 데이터베이스 관리시스템의 데이터 무결성 유지
- 무결성을 위반하는 데이터 저장 거절
무결성 제약 조건
- 도메인 무결성 제약 조건 (Domain Integrity Constraint)
- 도메인 제약(Domain Constraint)
- 릴레이션 내의 투플들이 각 속성의 도메인에 지정된 값만 가져야 한다는 조건
- 예 : 주문 릴레이션의 주문일자 속성
- 날짜 데이터만 사용하여야 함.
- 문자 등의 다른 자료형을 사용하면 안됨
- 구현 방법
- SQL 문에서 데이터 형식(Type), 널(NULL / NOT NULL), 기본 값(Default), 체크(Check)등을 사용하여 지정 (일반 프로그래밍 언어에서 변수형 선언과 유사)
- 개체 무결성 제약조건 (Entity Integrity Constraint)
- 기본키 제약 (Primary Key Constraint)라고도 함.
- 기본키의 무결성을 위한 제약 조건
- 기본키의 특징을 유지하기 위한 조건
- NULL 값을 가져서는 안된다.
- 릴레이션 내에 오직 하나의 값만 존재하여야 한다.
- 관계 데이터 모델의 핵심 개념
- 투플 삽입시 개체 무결성 제약 조건 수행
- 투플 수정시 개체 무결성 제약 조건 수행
- 삽입 연산과 동일하게 제약에 따라 처리된다.
- 동일한 값으로 수정시 제약을 검색한 후 위배되면 수정이 거부된다.
- 투플 삭제시 개체 무결성 제약 조건 수행
- 특별한 확인이 필요하지 않으며 즉시 수행된다.
- 단, 참조 무결성 제약 조건에 의하여 다른 릴레이션에서 기본키를 참조하고 있으면, 바로 삭제하지 않는다.
- 참조 무결성 제약조건 (Referential Integrity Constraint)
- 외래키 제약 (Foreign Key Constraint) 라고도 함.
- 릴레이션 간의 참조 관계를 선언하는 제약조건
- 부모(Parent) 릴레이션과 자식(Child) 릴레이션 관계
- 부모 릴레이션 : 참조를 제공하는 릴레이션 (기본키)
- 자식 릴레이션 : 참조를 제공받는 릴레이션 (외래키)
- 자식 릴레이션의 값은 부모 릴레이션의 제약을 받는다.
- 자식 릴레이션의 값이 부모 릴레이션의 도메인과 다른 값으로 삽입, 수정될 경우 거부
- 자식 릴레이션에서 참조하고 있는 값을 부모 릴레이션에서 삭제하거나 다른 값으로 변경할 경우 거부
- 투플 삽입시 참조 무결성 제약 조건 수행
- 투플 삭제시 참조 무결성 제약 조건 수행
- 자식 릴레이션에서 투플이 삭제되는 경우 : 부모 릴레이션에는 영향이 없으므로 바로 삭제
- 부모 릴레이션에서 투플이 삭제되는 경우 : 문제 발생되며 조치 방법
- (가) 즉시 작업 중지 (나) 자식 릴레이션의 관련 투플을 삭제 (다) 자식 릴레이션의 관련 투플을 설정된 다른 값으로 변경 (라) 자식 릴레이션의 관련 투플을 NULL 값으로 설정
- 투플 수정시 참조 무결성 제약 조건 수행
- 부모 릴레이션의 투플이 수정되는 경우
- (가) 삭제 옵션에 따라 처리 (나) 문제가 없으면 삽입 제약 조건에 따라 처리
- 기타 제약 조건
- 키 제약(Key Constraint)라고도 함.
- 키 속성을 유지하기 위한 제약
- 키의 모든 값은 달라야 한다.
- 단, NULL 값을 허용한다.
- 키는 NULL 값을 허용하지 않는다.
- (1) 고유성 제약조건 (Unique Constraint)
728x90
'프로그래밍 > Database' 카테고리의 다른 글
[Database] 순수관계 연산자란? (1) (0) | 2020.04.06 |
---|---|
[Database] 관계 대수 (0) | 2020.04.06 |
[Database] 키 (Key) (0) | 2020.04.06 |
관계 데이터 모델, 릴레이션 (0) | 2020.04.06 |
[Database] 약한 개체와 IE표기법 (0) | 2020.04.06 |