Berurusan dengan Kunci Asing kepada Berbilang Jadual
Anda mempunyai tiga jadual: wilayah, negara dan negeri. Negara dan negeri boleh menjadi milik wilayah, membentuk struktur hierarki. Sekarang, anda ingin membuat jadual "kawasan_popular" dengan lajur "id_region" dan "id_tempat_popular" dan mewujudkan hubungan utama asing antara "id_tempat_popular" dan sama ada negara atau negeri berdasarkan lajur "jenis_tempat_popular".
Ini senario memberikan cabaran kerana kekangan kunci asing SQL biasanya merujuk jadual sasaran tunggal. Walau bagaimanapun, terdapat konsep yang dikenali sebagai Persatuan Polimorfik dalam reka bentuk pangkalan data yang cuba menangani perkara ini.
Persatuan Polimorfik: Menyertai Pelbagai Jadual dengan Superjenis Biasa
Persatuan Polimorfik membenarkan kunci asing untuk merujuk kepada salah satu daripada beberapa jadual sasaran yang mungkin. Ini dicapai dengan menggunakan lajur tambahan untuk menentukan jadual sasaran yang dirujuk. Sebagai contoh, dalam kes anda, anda memerlukan lajur "popular_place_type" untuk menentukan sama ada "popular_place_id" merujuk kepada negara atau negeri.
Walau bagaimanapun, Polimorfik Persatuan mempunyai had dalam SQL disebabkan oleh kekangan. SQL tidak boleh menguatkuasakan konsistensi pangkalan data dengan persatuan polimorfik. Sebaliknya, ia bergantung pada aplikasi atau rangka kerja yang melaksanakan persatuan ini untuk memastikan integriti data.
Penyelesaian Alternatif untuk Rujukan Utama Asing kepada Berbilang Jadual
Untuk mengekalkan integriti rujukan tanpa Polimorfik Persatuan, pertimbangkan alternatif ini:
Integriti Hubungan dan Pelanggaran Bentuk Biasa
Adalah penting untuk ambil perhatian bahawa Persatuan Polimorfik melanggar prinsip normalisasi pangkalan data. Borang Biasa Pertama (1NF) melarang mencampurkan makna yang berbeza dalam satu lajur, yang berlaku apabila menyimpan kedua-dua ID negeri dan negara dalam satu lajur "popular_place_id" tunggal. Persatuan Polimorfik juga melanggar Bentuk Biasa Ketiga (3NF) kerana maksud lajur "id_tempat_popular" bergantung pada lajur "jenis_tempat_popular" tambahan.
Ringkasnya, Persatuan Polimorfik menawarkan penyelesaian yang berpotensi untuk hubungan kunci asing kepada berbilang jadual dalam SQL. Walau bagaimanapun, mereka memperkenalkan cabaran integriti data dan melanggar prinsip normalisasi pangkalan data. Pertimbangkan pendekatan alternatif yang dinyatakan di atas untuk pengurusan data yang mantap.
Atas ialah kandungan terperinci Bagaimana Mengendalikan Perhubungan Utama Asing kepada Berbilang Jadual dalam Pangkalan Data SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!