Verwenden Sie die Join-Tabelle, um eine Viele-zu-Viele-Beziehung in PostgreSQL zu implementieren
Many-to-many-Beziehungen verstehen
In einer Viele-zu-Viele-Beziehung kann eine einzelne Entität mit mehreren anderen Entitäten in Beziehung stehen und umgekehrt. Um dies in einer Datenbank darzustellen, wird üblicherweise eine separate Tabelle namens „Join-Tabelle“ verwendet.
Tabellenstruktur in PostgreSQL erstellen
Um eine Viele-zu-Viele-Beziehung in PostgreSQL zu erstellen, müssen Sie zunächst zwei Haupttabellen definieren und dann die Join-Tabelle erstellen.
<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>
Nach dem Login kopieren
Hauptmerkmale der Tabellenstruktur
-
Produkt: stellt ein einzelnes Produkt mit einem Namen und einem Preis dar.
-
Rechnung: stellt eine einzelne Rechnung mit Beschreibung und Datum dar.
-
Bill_Product: Erstellen Sie eine Verbindungstabelle für Viele-zu-Viele-Beziehungen. Es enthält zwei Fremdschlüssel für die Produkt- und Rechnungstabellen sowie eine Betragsspalte für jede Kombination.
Notizen
-
Ersatz-Primärschlüssel: Wir haben die serielle Spalte als Ersatz-Primärschlüssel für die Produkt- und Rechnungstabellen definiert. Hierbei handelt es sich um eindeutige Ganzzahlwerte, die vom System automatisch generiert werden, wodurch das Zusammenführen von Tabellen in Abfragen effizienter wird.
-
Namenskonvention: Wir folgen einer konsistenten Namenskonvention und verwenden Singular-Substantive für Tabellen und Kleinbuchstaben für Spaltennamen.
-
Datentyp: Wir haben geeignete Datentypen wie Preis als Nummerntyp und Rechnungsdatum als Datumstyp ausgewählt, um die Genauigkeit sicherzustellen.
-
Fremdschlüssel: Fremdschlüssel wurden als ON UPDATE CASCADE und ON DELETE CASCADE definiert, um Änderungen oder Löschungen automatisch weiterzugeben.
-
NOT NULL-Einschränkung: Wir haben alle Spalten als NOT NULL definiert, um die Datenintegrität zu erzwingen.
-
Index: erstellt automatisch einen Index für den Primärschlüssel der Tabelle Bill_Product und beschleunigt so Abfragen.
Das obige ist der detaillierte Inhalt vonWie implementiert man Viele-zu-Viele-Beziehungen in PostgreSQL mithilfe von Junction-Tabellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!