Menguasai Perhubungan Pangkalan Data untuk Pengurusan Data yang Cekap
Reka bentuk pangkalan data yang berkesan bergantung pada penstrukturan jadual dengan betul dan menentukan perhubungan antaranya. Tiga jenis perhubungan asas mengawal cara rekod bersambung: satu-ke-satu, satu-ke-banyak dan banyak-ke-banyak. Mari terokai setiap jenis dan pelaksanaannya.
Hubungan Satu dengan Satu
Hubungan satu dengan satu menandakan surat-menyurat satu-dengan-satu antara rekod dalam dua jadual. Ini dicapai menggunakan kunci asing dalam jadual bergantung yang merujuk kepada kunci utama jadual induk.
Contoh:
<code class="language-sql">-- Table 1: Student CREATE TABLE Student ( student_id INT PRIMARY KEY, first_name VARCHAR(255), last_name VARCHAR(255), address_id INT ); -- Table 2: Address CREATE TABLE Address ( address_id INT PRIMARY KEY, address VARCHAR(255), city VARCHAR(255), zipcode VARCHAR(10), student_id INT UNIQUE );</code>
Setiap student_id
secara unik memetakan ke address_id
, menggambarkan pautan satu dengan satu. Perhatikan UNIQUE
kekangan pada student_id
dalam jadual Address
.
Hubungan Satu-dengan-Banyak
Dalam perhubungan satu-dengan-banyak, satu rekod dalam satu jadual boleh dikaitkan dengan berbilang rekod dalam yang lain. Jadual bergantung menggunakan kunci asing yang merujuk kepada kunci utama jadual induk.
Contoh:
<code class="language-sql">-- Table 1: Teacher CREATE TABLE Teacher ( teacher_id INT PRIMARY KEY, first_name VARCHAR(255), last_name VARCHAR(255) ); -- Table 2: Class CREATE TABLE Class ( class_id INT PRIMARY KEY, class_name VARCHAR(255), teacher_id INT );</code>
Seorang guru boleh mengajar berbilang kelas, tetapi setiap kelas hanya mempunyai seorang guru.
Hubungan Ramai dengan Ramai
Perhubungan banyak-ke-banyak menghubungkan berbilang rekod dalam satu jadual kepada berbilang rekod dalam satu lagi. Ini memerlukan jadual simpang yang mengandungi kunci asing daripada kedua-dua jadual.
Contoh:
<code class="language-sql">-- Table 1: Student CREATE TABLE Student ( student_id INT PRIMARY KEY, first_name VARCHAR(255), last_name VARCHAR(255) ); -- Table 2: Class CREATE TABLE Class ( class_id INT PRIMARY KEY, name VARCHAR(255) ); -- Junction Table: Student_Class CREATE TABLE Student_Class ( class_id INT, student_id INT, PRIMARY KEY (class_id, student_id) );</code>
Jadual Student_Class
membenarkan berbilang pelajar dalam berbilang kelas.
Integriti Data: Menguatkuasakan UNIQUE
kekangan pada kunci asing dalam perhubungan satu-dengan-satu dan satu-dengan-banyak adalah penting untuk mengekalkan ketekalan data.
Pertanyaan Ilustrasi:
<code class="language-sql">-- Students in a specific class: SELECT s.student_id, s.last_name FROM Student_Class sc JOIN Student s ON s.student_id = sc.student_id WHERE sc.class_id = 1; -- Classes attended by a specific student: SELECT c.class_id, c.name FROM Student_Class sc JOIN Class c ON c.class_id = sc.class_id WHERE sc.student_id = 2;</code>
Atas ialah kandungan terperinci Bagaimanakah Hubungan Pangkalan Data Satu-dengan-Satu, Satu-dengan-Ramai, dan Banyak-ke-Banyak Berfungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!