Pangkalan data Oracle ialah sistem pengurusan pangkalan data hubungan (RDBMS) yang sangat popular dengan ciri berkuasa, termasuk sokongan untuk kunci asing.
Kunci asing merujuk kepada medan atau sekumpulan medan yang digunakan dalam satu jadual untuk dikaitkan dengan baris dalam jadual lain. Ia boleh digunakan untuk memastikan integriti data dan membolehkan capaian data berasaskan pertanyaan. Sebelum menambah kekangan kunci asing, jadual dan perkaitan yang diperlukan antara jadual mesti diwujudkan dalam Oracle. Dalam artikel ini, kami akan memperkenalkan secara terperinci proses penetapan kunci asing dalam Oracle.
1. Cipta jadual dan perhubungan
Pertama, kita perlu mencipta jadual yang perlu menetapkan kekangan kunci asing dan jadual menghala ke jadual. Katakan kita ingin mengaitkan jadual pelanggan dengan jadual pesanan. Kita boleh mencipta dua jadual ini dalam Oracle menggunakan kod berikut:
CREATE TABLE customers ( customer_id INT PRIMARY KEY, customer_name VARCHAR(50), customer_email VARCHAR(100) ); CREATE TABLE orders ( order_id INT PRIMARY KEY, order_date DATE, customer_id INT, FOREIGN KEY (customer_id) REFERENCES customers(customer_id) );
Dalam contoh di atas, kami telah mencipta dua jadual iaitu pelanggan dan pesanan. Jadual pesanan mengandungi medan customer_id yang sepadan dengan pelanggan, yang merupakan medan kunci utama jadual pelanggan.
2. Tambah kekangan kunci asing
Selepas mewujudkan perhubungan, kita boleh menambah kekangan kunci asing. Kekangan kunci asing dalam Oracle boleh ditakrifkan apabila jadual dibuat atau ditambah selepas jadual dibuat.
Dalam langkah sebelumnya, kami telah mentakrifkan kekangan utama asing dan menambahkannya pada jadual melalui penyata FOREIGN KEY dan RUJUKAN. Di sini, kami akan menerangkan maksud setiap kata kunci secara terperinci:
Dalam Oracle, sintaks untuk menambah kekangan kunci asing adalah seperti berikut:
ALTER TABLE child_table ADD CONSTRAINT fk_name FOREIGN KEY (child_column) REFERENCES parent_table (parent_column);
Di mana, child_table ialah subjadual yang mengandungi medan kunci asing, child_column ialah nama bagi lajur kunci asing, parent_table ialah nama jadual sasaran, parent_column ialah nama lajur kunci utama dalam jadual sasaran. fk_name ialah nama kekangan kunci asing dan mestilah unik.
Sebagai contoh, dalam jadual pesanan kami, kami boleh menambah kekangan kunci asing berikut (nota, ini boleh dilakukan pada masa penciptaan jadual melalui kenyataan CREATE TABLE):
ALTER TABLE orders ADD CONSTRAINT fk_customer_id FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ON DELETE CASCADE;
Ini akan dilakukan pada masa penciptaan jadual Tambahkan kekangan kunci asing bernama fk_customer_id pada jadual pesanan, yang merujuk kepada lajur kunci utama customer_id dalam jadual pelanggan. Apabila anda memadamkan baris dalam jadual pelanggan, operasi itu turut memadamkan semua pesanan yang dikaitkan dengannya.
3. Uji kekangan kunci asing
Setelah kekangan kunci asing ditambahkan pada jadual, kami boleh menguji sama ada ia berfungsi dengan betul. Kita boleh menguji kekangan ini dengan memasukkan baris ke dalam jadual pesanan yang tidak sepadan dengan nilai customer_id:
INSERT INTO orders (order_id, order_date, customer_id) VALUES (1, '2021-01-01', 100); -- ERROR: ORA-02291: integrity constraint (fk_customer_id) violated - parent key not found
Ini akan menyebabkan ralat kerana ia merujuk nilai customer_id yang tidak wujud dalam jadual pelanggan. Kami boleh menggunakan kod ralat berkaitan kekangan integriti ORA-02291 untuk mengesahkan bahawa kunci asing berfungsi.
4. Ringkasan
Dalam Oracle, kunci asing ialah alat penting untuk memastikan integriti data dan mengekalkan hubungan antara jadual. Kita boleh menggunakan kata kunci FOREIGN KEY dan REFERENCES untuk mentakrifkan kekangan kunci asing dan mentakrifkan operasi lata menggunakan ON DELETE CASCADE, SET NULL atau NO ACTION. Selepas menentukan kekangan kunci asing, kami boleh menguji sama ada ia berfungsi dengan betul dan memastikan ia berfungsi dalam operasi pangkalan data.
Atas ialah kandungan terperinci Pengenalan terperinci kepada proses penetapan kunci asing dalam Oracle. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!