簡介
引用完整性對於確保關聯式資料庫中的資料完整性準確性至關重要。它保證外鍵中的引用有效且與其引用的主鍵一致。本文探討如何在子類型中實現引用完整性,這是資料建模中的常見場景。
獨佔子型別
在獨佔子型別關係中,每個基本型別只能有一個子型別。這通常是使用基底類型表中標識子類型的鑑別器列來實現。
使用函數和檢查約束實現:
在非排他子類型關係中,一個基本類型行可以有多個子類型行。欄位。實作:
-- 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基底類型表。 🎜>需要注意的是,所描述的方法並不會阻止使用者直接更新基底類型的鑑別器或子類型行。整體提交,要么在任何操作失敗時回滾。 >
結論
透過使用所描述的方法在子類型中實現引用完整性,您可以確保資料庫中的資料關係保持一致。可能引起的數據不一致方面發揮著重要作用。
以上是在關聯式資料庫中使用子類型時如何保持引用完整性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!