Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Melaksanakan Persatuan Polimorfik dalam MySQL untuk Mengendalikan Kunci Asing Bersyarat?

Bagaimanakah Saya Boleh Melaksanakan Persatuan Polimorfik dalam MySQL untuk Mengendalikan Kunci Asing Bersyarat?

DDD
Lepaskan: 2025-01-16 11:41:17
asal
277 orang telah melayarinya

How Can I Implement Polymorphic Associations in MySQL to Handle Conditional Foreign Keys?

Kunci asing bersyarat dalam MySQL

Dalam reka bentuk pangkalan data, selalunya perlu menguatkuasakan kekangan kunci asing untuk memastikan konsistensi data. Walau bagaimanapun, dalam senario yang melibatkan polimorfisme, kunci asing boleh merujuk baris dalam berbilang jadual berkaitan, dan kekangan kunci asing tradisional tidak mencukupi.

Dalam contoh yang disediakan, jadual ulasan mengandungi medan foreign_id, yang boleh merujuk jadual berbeza (siaran blog, gambar, dll.) berdasarkan medan model. Untuk melakukan ini, kekangan kunci asing bersyarat diperlukan.

MySQL sendiri tidak menyokong kekangan kunci asing bersyarat. Mengisytiharkan kunci asing yang merujuk jadual berbeza berdasarkan syarat akan melanggar prinsip reka bentuk pangkalan data hubungan.

Pendekatan yang lebih cekap, dipanggil "perkaitan polimorfik", melibatkan penciptaan "supertable" yang berfungsi sebagai titik rujukan tunggal untuk semua jadual berkaitan. Dalam kes ini, struktur berikut boleh dilaksanakan:

<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 (siaran blog, imej pengguna, dll.) menjadi subjenis supertable Boleh Dikomen:

<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

Memasukkan data ke dalam jadual kandungan tertentu memerlukan terlebih dahulu memasukkan baris baharu ke dalam jadual Boleh Diulas untuk mendapatkan id kunci utama pseudo. Id ini kemudiannya boleh digunakan untuk jadual kandungan tertentu.

Pendekatan ini membenarkan integriti rujukan sambil mengekalkan fleksibiliti yang diperlukan untuk persatuan polimorfik.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Persatuan Polimorfik dalam MySQL untuk Mengendalikan Kunci Asing Bersyarat?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan