Gunakan jadual gabungan untuk melaksanakan perhubungan banyak-ke-banyak dalam PostgreSQL
Memahami perhubungan ramai-ke-banyak
Dalam perhubungan banyak-ke-banyak, satu entiti boleh dikaitkan dengan berbilang entiti lain dan begitu juga sebaliknya. Untuk mewakili ini dalam pangkalan data, jadual berasingan yang dipanggil "join table" biasanya digunakan.
Buat struktur jadual dalam PostgreSQL
Untuk mencipta perhubungan banyak-ke-banyak dalam PostgreSQL, anda perlu mentakrifkan dua jadual utama dahulu dan kemudian mencipta jadual gabungan.
<code class="language-sql">CREATE TABLE product (
product_id serial PRIMARY KEY -- 隐式主键约束
, product text NOT NULL
, price numeric NOT NULL DEFAULT 0
);
CREATE TABLE bill (
bill_id serial PRIMARY KEY
, bill text NOT NULL
, billdate date NOT NULL DEFAULT CURRENT_DATE
);
CREATE TABLE bill_product (
bill_id int REFERENCES bill (bill_id) ON UPDATE CASCADE ON DELETE CASCADE
, product_id int REFERENCES product (product_id) ON UPDATE CASCADE
, amount numeric NOT NULL DEFAULT 1
, CONSTRAINT bill_product_pkey PRIMARY KEY (bill_id, product_id) -- 显式主键
);</code>
Salin selepas log masuk
Ciri utama struktur meja
-
Produk: mewakili satu produk dengan nama dan harga.
-
Bil: mewakili satu bil dengan keterangan dan tarikh.
-
Bill_Product: Buat jadual sambungan untuk perhubungan banyak-ke-banyak. Ia mengandungi dua kunci asing kepada jadual Produk dan Bil, dan lajur amaun untuk setiap gabungan.
Nota
-
Kunci utama pengganti: Kami telah menentukan lajur bersiri sebagai kunci utama pengganti untuk jadual Produk dan Bil. Ini adalah nilai integer unik yang dijana secara automatik oleh sistem, yang menjadikan penggabungan jadual dalam pertanyaan lebih cekap.
-
Konvensyen Penamaan: Kami mengikut konvensyen penamaan yang konsisten, menggunakan kata nama tunggal untuk jadual dan huruf kecil untuk nama lajur.
-
Jenis Data: Kami telah memilih jenis data yang sesuai seperti harga sebagai jenis nombor dan tarikh bil sebagai jenis tarikh untuk memastikan ketepatan.
-
Kunci Asing: Kunci asing telah ditakrifkan sebagai ON UPDATE CASCADE dan ON DELETE CASCADE untuk menyebarkan perubahan atau pemadaman secara automatik.
-
BUKAN NULL kekangan: Kami telah mentakrifkan semua lajur sebagai BUKAN NULL untuk menguatkuasakan integriti data.
-
Indeks: akan membuat indeks secara automatik pada kunci utama jadual Bill_Product, sekali gus mempercepatkan pertanyaan.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Perhubungan Banyak-ke-Banyak dalam PostgreSQL Menggunakan Jadual Junction?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!