소개
참조 무결성은 관계형 데이터베이스에서 데이터 정확성을 보장하는 데 매우 중요합니다. 이는 외래 키의 참조가 유효하고 참조하는 기본 키와 일치함을 보장합니다. 이 문서에서는 데이터 모델링의 일반적인 시나리오인 하위 유형에서 참조 무결성을 구현하는 방법을 살펴봅니다.
배타적 하위 유형
배타적 하위 유형 관계에서 각 기본 유형 행은 다음을 가질 수 있습니다. 하나의 하위 유형 행. 이는 일반적으로 하위 유형을 식별하는 기본 유형 테이블의 판별자 열을 사용하여 구현됩니다.
함수 및 CHECK CONSTRAINT를 사용한 구현:
예:
-- UDF to check basetype existence CREATE FUNCTION CheckBaseTypeExists (@PrimaryKey INT, @Discriminator CHAR(1)) RETURNS BIT AS BEGIN DECLARE @Exists BIT; SELECT @Exists = CASE WHEN EXISTS (SELECT 1 FROM BaseType WHERE PrimaryKey = @PrimaryKey AND Discriminator = @Discriminator) THEN 1 ELSE 0 END; RETURN @Exists; END; -- CHECK CONSTRAINT in Subtype ALTER TABLE Subtype ADD CONSTRAINT FK_BaseType FOREIGN KEY (PrimaryKey, Discriminator) REFERENCES BaseType (PrimaryKey, Discriminator) CHECK (CheckBaseTypeExists(PrimaryKey, Discriminator) = 1);
비독점 하위 유형
비배타적 하위 유형 관계에서 기본 유형 행은 여러 하위 유형 행을 가질 수 있습니다. 이 경우 판별자 열을 사용할 필요가 없습니다.
PRIMARY KEY 및 FOREIGN KEY를 사용한 구현:
하위 유형 테이블의 PRIMARY KEY는 FOREIGN KEY이기도 합니다. 기본 유형 테이블. 이렇게 하면 각 하위 유형 행이 고유한 기본 유형 행과 연결됩니다.
예:
CREATE TABLE Subtype ( PrimaryKey INT PRIMARY KEY, ForeignKey INT REFERENCES BaseType (PrimaryKey), ... );
트랜잭션을 사용한 시행
설명된 방법은 사용자가 기본 유형의 판별자를 직접 업데이트하는 것을 막지 않는다는 점에 유의하는 것이 중요합니다. 또는 하위 유형 행. 이러한 시나리오에서 참조 무결성을 적용하려면 트랜잭션을 사용해야 합니다. 트랜잭션은 여러 작업이 전체적으로 커밋되거나 작업이 실패할 경우 롤백되도록 보장합니다.
결론
설명된 방법을 사용하여 하위 유형에 참조 무결성을 구현하면 데이터베이스의 데이터 관계가 유지되고 일관되게 유지되도록 할 수 있습니다. 트랜잭션은 직접적인 데이터 조작으로 인해 발생할 수 있는 데이터 불일치를 방지하는 데 중요한 역할을 합니다.
위 내용은 관계형 데이터베이스에서 하위 유형으로 작업할 때 참조 무결성을 유지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!