데이터 무결성

데이터 무결성을 강제 적용하면 데이터베이스에 있는 데이터의 품질이 보장됩니다. 예를 들어 한 사원의 사원 ID 값으로 123을 입력한 경우 데이터베이스의 다른 사원이 동일한 값의 ID를 갖지 못하도록 해야 합니다. employee_rating 열에 필요한 값이 1에서 5 사이이면 데이터베이스에서 이 범위를 벗어난 값을 허용하지 않아야 합니다. 테이블에 사원의 부서 번호를 저장하는 dept_id 열이 있으면 데이터베이스에서 회사의 부서 번호에 유효한 값만 허용해야 합니다.

테이블을 계획할 때 필요한 두 가지 주요 단계는 특정 열에서 유효한 값을 확인하고 열에 있는 데이터의 무결성을 유지하는 방법을 결정하는 것입니다. 데이터 무결성은 다음과 같은 4가지 범주로 구성됩니다.

  • 엔터티 무결성

  • 도메인 무결성

  • 참조 무결성

  • 사용자 정의 무결성

엔터티 무결성

엔터티 무결성은 행을 특정 테이블의 고유 엔터티로 정의합니다. 엔터티 무결성은 UNIQUE 인덱스, UNIQUE 제약 조건 또는 PRIMARY KEY 제약 조건을 통해 테이블의 기본 키나 식별자 열의 무결성을 강제 적용합니다.

도메인 무결성

도메인 무결성은 특정 열에 대한 항목의 유효성입니다. 데이터 형식을 통해 유형을 제한하거나 CHECK 제약 조건 및 규칙을 통해 형식을 제한하거나 FOREIGN KEY 제약 조건, CHECK 제약 조건, DEFAULT 정의, NOT NULL 정의 및 규칙을 통해 가능한 값 범위를 제한하여 도메인 무결성을 강제 적용할 수 있습니다.

참조 무결성

참조 무결성은 행이 입력되거나 삭제될 때 테이블 간에 정의된 관계를 유지합니다. SQL Server에서 참조 무결성은 FOREIGN KEY 및 CHECK 제약 조건을 통해 외래 키와 기본 키 간의 관계 또는 외래 키와 고유 키 간의 관계에 기초합니다. 참조 무결성은 여러 테이블에서 키 값이 일관되도록 합니다. 이를 위해서는 존재하지 않는 값에 대한 참조가 없어야 하며 키 값이 변경될 경우 해당 키 값에 대한 모든 참조가 데이터베이스 전체에서 일관되게 변경되어야 합니다.

참조 무결성을 강제 적용하면 SQL Server에서 사용자가 다음 작업을 수행할 수 없습니다.

  • 기본 테이블에 연결된 행이 없을 경우 관련 테이블에 행을 추가하거나 변경할 수 없습니다.

  • 관련 테이블에서 고아 행이 발생할 경우 기본 테이블의 값을 변경할 수 없습니다.

  • 일치하는 관련 행이 있을 경우 기본 테이블에서 행을 삭제할 수 없습니다.

예를 들어 AdventureWorks 데이터베이스에 있는 Sales.SalesOrderDetailProduction.Product 테이블의 경우 참조 무결성은 Sales.SalesOrderDetail 테이블의 외래 키(ProductID)와 Production.Product 테이블의 기본 키(ProductID) 간의 관계에 기초합니다. 이 관계는 판매 주문이 Production.Product 테이블에 존재하지 않는 제품을 참조할 수 없도록 합니다.

외래 키/기본 키를 사용한 참조 무결성

사용자 정의 무결성

사용자 정의 무결성을 사용하여 다른 무결성 범주에 속하지 않는 특정 업무 규칙을 정의할 수 있습니다. 모든 무결성 범주에서 사용자 정의 무결성이 지원됩니다. 여기에는 CREATE TABLE, 저장 프로시저 및 트리거의 모든 열 수준 제약 조건과 테이블 수준 제약 조건이 포함됩니다.