Heim > Datenbank > MySQL-Tutorial > Wie implementiert man Viele-zu-Viele-Beziehungen in PostgreSQL mithilfe von Junction-Tabellen?

Wie implementiert man Viele-zu-Viele-Beziehungen in PostgreSQL mithilfe von Junction-Tabellen?

DDD
Freigeben: 2025-01-22 15:02:11
Original
141 Leute haben es durchsucht

How to Implement Many-to-Many Relationships in PostgreSQL Using Junction Tables?

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage