Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Melaksanakan Kekangan Utama Asing Bersyarat dalam MySQL untuk Persatuan Polimorfik?

Bagaimana untuk Melaksanakan Kekangan Utama Asing Bersyarat dalam MySQL untuk Persatuan Polimorfik?

Patricia Arquette
Lepaskan: 2025-01-16 11:22:59
asal
552 orang telah melayarinya

How to Implement Conditional Foreign Key Constraints in MySQL for Polymorphic Associations?

Kekangan kunci asing bersyarat dalam MySQL: menyelesaikan masalah persatuan polimorfik

Kekangan kunci asing menguatkuasakan integriti data dengan memastikan bahawa nilai dalam satu jadual merujuk kepada nilai yang sepadan dalam jadual lain yang berkaitan. Walau bagaimanapun, dalam beberapa kes, jadual mungkin memerlukan kunci asing yang merujuk jadual berbeza berdasarkan syarat. Ini dipanggil Kekangan Kunci Asing Bersyarat.

Dalam kes ini, cabarannya adalah untuk mencipta jadual Comments yang boleh menyimpan ulasan untuk pelbagai bahagian aplikasi. Contohnya, ulasan pada catatan blog dan imej pengguna. Sebaik-baiknya, kekangan kunci asing pada Comments dalam jadual foreign_id hanya boleh digunakan apabila model ditetapkan kepada 'blogpost'.

Penyelesaian: Persatuan Polimorfik

Malangnya, MySQL tidak secara langsung menyokong kekangan kunci asing bersyarat. Sebaliknya, penyelesaiannya melibatkan penggunaan corak reka bentuk yang dipanggil Persatuan Polimorfik. Skema ini memperkenalkan jadual perantaraan bernama Commentable.

<code class="language-sql">CREATE TABLE Commentable (
  id SERIAL PRIMARY KEY
);

CREATE TABLE Comments (
  comment_id SERIAL PRIMARY KEY,
  foreign_id INT NOT NULL,
  ...
  FOREIGN KEY (foreign_id) REFERENCES Commentable(id)
);</code>
Salin selepas log masuk

Setiap jenis kandungan (cth., BlogPost, UserPicture) menjadi subjenis Commentable dan merujuknya melalui kunci asing.

<code class="language-sql">CREATE TABLE BlogPosts (
  blogpost_id INT PRIMARY KEY, -- 非自增
  ...
  FOREIGN KEY (blogpost_id) REFERENCES Commentable(id)
);

CREATE TABLE UserPictures (
  userpicture_id INT PRIMARY KEY, -- 非自增
  ...
  FOREIGN KEY (userpicture_id) REFERENCES Commentable(id)
);</code>
Salin selepas log masuk

Sebelum menambah data pada jadual subjenis ini, baris baharu mesti dimasukkan ke dalam jadual Commentable untuk menjana ID unik. ID yang dijana ini kemudiannya digunakan sebagai kunci asing dalam jadual subjenis.

Dengan menggunakan corak reka bentuk ini, anda boleh menguatkuasakan kekangan integriti rujukan, memastikan ulasan pada catatan blog hanya merujuk siaran blog dan ulasan pada gambar pengguna hanya merujuk gambar pengguna.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Kekangan Utama Asing Bersyarat dalam MySQL untuk Persatuan Polimorfik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan