Rumah >pangkalan data >tutorial mysql >Bolehkah Kunci Asing Rujukan Berbilang Kunci Utama Secara serentak?

Bolehkah Kunci Asing Rujukan Berbilang Kunci Utama Secara serentak?

Barbara Streisand
Barbara Streisandasal
2025-01-11 10:21:43125semak imbas

Can a Foreign Key Reference Multiple Primary Keys Simultaneously?

Mengendalikan Perhubungan Utama Asing Kompleks dalam Reka Bentuk Pangkalan Data

Senario

Contoh ini meneroka cabaran reka bentuk pangkalan data biasa: mewujudkan hubungan kunci asing yang mana satu jadual perlu merujuk kunci utama daripada berbilang jadual lain. Senario khusus melibatkan jadual deductions yang perlu dipautkan ke kedua-dua jadual employees_ce dan employees_sn.

Masalah dan Penyelesaiannya

Persoalannya ialah sama ada kunci asing dalam deductions boleh merujuk terus kekunci primer dalam kedua-dua employees_ce dan employees_sn secara serentak. Jawapannya ialah: tidak secara langsung, dalam pangkalan data hubungan standard. Satu kunci asing hanya boleh merujuk satu kunci utama.

Penyelesaian yang dicadangkan memanfaatkan model warisan yang tersusun dengan baik untuk menyelesaikan masalah ini.

Pendekatan Berasaskan Warisan

Jadual employees, employees_ce dan employees_sn mewakili hierarki warisan. employees ialah jadual asas, dengan employees_ce dan employees_sn sebagai jadual khusus yang diwarisi daripadanya.

Struktur Pangkalan Data:

<code class="language-sql">employees (id INT PRIMARY KEY, name VARCHAR(255))
employees_ce (id INT PRIMARY KEY, ce_specific_attribute VARCHAR(255), employee_id INT, FOREIGN KEY (employee_id) REFERENCES employees(id))
employees_sn (id INT PRIMARY KEY, sn_specific_attribute VARCHAR(255), employee_id INT, FOREIGN KEY (employee_id) REFERENCES employees(id))</code>

Penyelesaian:

Daripada pautan terus ke employees_ce dan employees_sn, jadual deductions hendaklah merujuk kepada jadual induk biasa, employees:

<code class="language-sql">deductions (id INT PRIMARY KEY, employee_id INT, deduction_amount DECIMAL(10,2), ..., FOREIGN KEY (employee_id) REFERENCES employees(id))</code>

Pendekatan ini memastikan integriti rujukan dan mengelakkan lebihan. employee_id dalam deductions memaut ke rekod pekerja dalam employees, tidak kira sama ada pekerja tersebut mempunyai maklumat tambahan dalam employees_ce atau employees_sn. Reka bentuk ini mengurus perhubungan dengan cekap dan mengekalkan ketekalan data.

Atas ialah kandungan terperinci Bolehkah Kunci Asing Rujukan Berbilang Kunci Utama Secara serentak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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