Pengenalan
Integriti rujukan adalah penting untuk memastikan ketepatan data dalam pangkalan data hubungan. Ia menjamin bahawa rujukan dalam kunci asing adalah sah dan konsisten dengan kunci utama yang dirujuknya. Artikel ini meneroka cara melaksanakan integriti rujukan dalam subjenis, senario biasa dalam pemodelan data.
Subjenis Eksklusif
Dalam perhubungan subjenis eksklusif, setiap baris jenis asas hanya boleh mempunyai satu baris subjenis. Ini biasanya dilaksanakan menggunakan lajur diskriminator dalam jadual jenis asas yang mengenal pasti subjenis.
Pelaksanaan menggunakan Fungsi dan KEKANGAN SEMAK:
Contoh:
-- 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);
Bukan eksklusif Subjenis
Dalam perhubungan subjenis bukan eksklusif, baris jenis asas boleh mempunyai berbilang baris subjenis. Ini tidak memerlukan penggunaan lajur diskriminator.
Pelaksanaan menggunakan PRIMARY KEY dan FOREIGN KEY:
PRIMER KEY bagi jadual subjenis juga merupakan FOREIGN KEY untuk jadual jenis asas. Ini memastikan bahawa setiap baris subjenis dikaitkan dengan baris jenis asas yang unik.
Contoh:
CREATE TABLE Subtype ( PrimaryKey INT PRIMARY KEY, ForeignKey INT REFERENCES BaseType (PrimaryKey), ... );
Penguatkuasaan Menggunakan Transaksi
Adalah penting untuk ambil perhatian bahawa kaedah yang diterangkan tidak menghalang pengguna daripada terus mengemas kini jenis asas baris diskriminator atau subjenis. Untuk menguatkuasakan integriti rujukan dalam senario ini, urus niaga harus digunakan. Transaksi memastikan bahawa berbilang operasi sama ada dilakukan secara keseluruhan atau dibatalkan semula jika mana-mana operasi gagal.
Kesimpulan
Dengan melaksanakan integriti rujukan dalam subjenis menggunakan kaedah yang diterangkan, anda boleh memastikan bahawa hubungan data dalam pangkalan data anda dikekalkan dan konsisten. Transaksi memainkan peranan penting dalam mencegah ketidakkonsistenan data yang mungkin timbul daripada manipulasi data langsung.
Atas ialah kandungan terperinci Bagaimana untuk Mengekalkan Integriti Rujukan Apabila Bekerja dengan Subjenis dalam Pangkalan Data Hubungan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!