Zum Hauptinhalt springen

SQL-Postgresql: Erstellen einer Eins-zu-Viele-Beziehung

PostgreSQL ist ein leistungsfähiges relationales DBMS, das viele Funktionen für die Arbeit mit Daten unterstützt. Anwendungen erfordern häufig die Erstellung von Verknüpfungen zwischen Tabellen, um Daten effizient zu speichern und zu verarbeiten. In diesem Artikel erfahren Sie, wie Sie eine Eins-zu-Viele-Beziehung in PostgreSQL mit SQL erstellen.

Erstellen von Tabellen

Bevor wir eine Beziehung erstellen können, müssen wir zwei Tabellen erstellen: eine für "eine" und die andere für "viele". Nehmen wir ein Beispiel für eine einfache Datenbank zur Buchhaltung von Bestellungen in einem Online-Shop. Wir haben eine Tabelle "Kunden", die Informationen über den Kunden enthält, und eine Tabelle "Bestellungen", in der die Bestelldaten gespeichert werden.

Erstellen Sie die Tabelle "Kunden" wie folgt:

CREATE TABLE Customers (customer_id SERIAL PRIMARY KEY,customer_name VARCHAR(100) NOT NULL,customer_email VARCHAR(100) NOT NULL UNIQUE);

Jetzt erstellen wir die Tabelle "Bestellungen":

CREATE TABLE Orders (order_id SERIAL PRIMARY KEY,order_date DATE NOT NULL,order_total DECIMAL(10,2) NOT NULL,customer_id INT REFERENCES Customers(customer_id));

Beachten Sie das Feld "customer_id" in der Tabelle "Bestellungen". Es handelt sich um einen Fremdschlüssel, der auf das Feld "customer_id" in der Tabelle "Kunden" verweist. Auf diese Weise erstellen wir eine Beziehung zwischen diesen Tabellen.

Einfügen von Daten

Nun, da wir Tabellen haben, fügen wir ihnen einige Daten hinzu. Wir fügen zwei Kunden und mehrere Bestellungen für jeden von ihnen ein. Verwenden Sie zum Beispiel die folgenden Daten:

  • Kunde 1: Ivan Ivanov ([email protected] )
  • Bestellungen des Kunden 1:
    1. Auftrag 1: 2025-01-01, 1000.00
    2. Auftrag 2: 2025-02-15, 2500.00
  • Kunde 2: Maria Petrova ([email protected] )
  • Aufträge des Kunden 2:
    1. Bestellung 3: 2025-03-10, 500.00
    2. Auftrag 4: 2025-04-20, 1500.00
    3. Bestellung 5: 2025-05-05, 3000.00

Das Einfügen von Daten würde folgendermaßen aussehen:

INSERT INTO Customers (customer_name, customer_email) VALUES('Иван Иванов', '[email protected]'),('Мария Петрова', '[email protected]');INSERT INTO Orders (order_date, order_total, customer_id) VALUES('2025-01-01', 1000.00, 1),('2025-02-15', 2500.00, 1),('2025-03-10', 500.00, 2),('2025-04-20', 1500.00, 2),('2025-05-05', 3000.00, 2);

Lassen Sie uns herausfinden, was in diesen Abfragen vor sich geht. Zuerst fügen wir die Kundendaten mithilfe einer INSERT INTO-Abfrage in die Tabelle "Kunden" ein. Geben Sie für jeden Kunden einen Namen und eine E-Mail-Adresse an.

Anschließend fügen wir die Auftragsdaten mithilfe einer INSERT INTO-Abfrage in die Tabelle Bestellungen ein. Für jede Bestellung geben Sie das Bestelldatum, den Gesamtbetrag der Bestellung und die Kunden-ID an. Beachten Sie, dass wir Kunden-IDs (1 und 2) verwenden, die in der Tabelle "Kunden" auf die entsprechenden Kunden verweisen. Dies ermöglicht die Verknüpfung zwischen Bestellungen und Kunden.

Anfragen mit Kommunikation

Jetzt, da wir die Daten haben, können wir Abfragen ausführen, die eine Eins-zu-Viele-Beziehung verwenden. Zum Beispiel möchten wir eine Liste aller Bestellungen eines bestimmten Kunden erhalten.

SELECT order_id, order_date, order_totalFROM OrdersWHERE customer_id = 1;

Diese Abfrage gibt eine Liste aller Bestellungen mit der Kunden-ID 1 zurück (Ivan Ivanov). Wir erhalten die Bestellnummer, das Datum und den Gesamtbetrag der Bestellung.

Wir können auch Feedback implementieren und Kundeninformationen für jede Bestellung erhalten:

SELECT Orders.order_id, Orders.order_date, Orders.order_total, Customers.customer_name, Customers.customer_emailFROM OrdersJOIN Customers ON Orders.customer_id = Customers.customer_id;

Schlußfolgerung

Das Erstellen einer Eins-zu-Viele-Beziehung ist ein wichtiger Aspekt des Datenbankdesigns. PostgreSQL bietet leistungsstarke Funktionen für die Arbeit mit solchen Beziehungen mit SQL. In diesem Artikel haben wir die Grundlagen zum Erstellen einer Eins-zu-Viele-Beziehung in PostgreSQL untersucht und Abfragen mit dieser Beziehung ausgeführt. Jetzt können Sie dieses Wissen anwenden, wenn Sie Ihre eigenen Anwendungen entwickeln, die PostgreSQL verwenden.

Grundlegende Prinzipien für die Erstellung einer Eins-zu-Viele-Beziehung in PostgreSQL

Eine Eins-zu-Viele-Beziehung bedeutet, dass ein einzelner Datensatz in Tabelle A mehrere verknüpfte Datensätze in Tabelle B haben kann. Beispielsweise können wir die Tabelle Benutzer und die Tabelle Bestellungen haben. In diesem Fall kann jeder Benutzer mehreren Bestellungen zugeordnet werden.

Um eine Eins-zu-Viele-Beziehung in PostgreSQL zu erstellen, verwenden wir einen Fremdschlüssel. Ein Fremdschlüssel ist eine Spalte oder ein Satz von Spalten in einer Tabelle, die auf den Primärschlüssel einer anderen Tabelle verweist. In unserem Beispiel ist die Spalte "benutzer_id" in der Tabelle "Bestellungen" ein Fremdschlüssel, der auf die Spalte "id" in der Tabelle "Benutzer" verweist.

Wenn Sie eine 1-zu-Viele-Beziehung in PostgreSQL erstellen, müssen Sie bestimmen, welche Tabelle die primäre Tabelle (eine Tabelle) sein soll und welche Tabelle die untergeordnete Tabelle (eine Viel-Tabelle) sein soll. In unserem Fall ist die Tabelle "Benutzer" die Haupttabelle und die Tabelle "Bestellungen" die untergeordnete Tabelle.

Um eine Beziehung zu erstellen, verwenden wir das Schlüsselwort "REFERENCES", das den Namen der Tabelle und Spalte angibt, auf die der Fremdschlüssel verweist. Zum Beispiel:

  • CREATE TABLE Benutzer (
  • id SERIAL PRIMARY KEY,
  • VARCHAR-Name(100)
  • );
  • CREATE TABLE Bestellungen (
  • id SERIAL PRIMARY KEY,
  • benutzer_id INTEGER REFERENCES Benutzer(id),
  • produkt VARCHAR(100),
  • anzahl der INTEGER
  • );

Im obigen Beispiel verweist die Spalte "Benutzer-ID" in der Tabelle "Bestellungen" auf die Spalte "id" in der Tabelle "Benutzer". Dies schafft eine Eins-zu-Viele-Beziehung zwischen ihnen.

Nachdem die Verknüpfung erstellt wurde, können wir den JOIN-Operator verwenden, um die Tabellen in Abfragen zu verbinden und die zugehörigen Daten abzurufen. Zum Beispiel können wir die folgende Abfrage schreiben:

SELECT orders.id, users.name, orders.produkt, orders.Anzahl

JOIN users ON orders.benutzer_id = users.id

In dieser Abfrage kombinieren wir die Tabellen "Aufträge" und "Benutzer" mit dem JOIN-Operator und ordnen die Werte der Spalte "benutzer_id" dem Wert der Spalte "id" zu. Auf diese Weise können wir Daten aus beiden Tabellen in derselben Abfrage abrufen.

Durch das Erstellen einer Eins-zu-Viele-Beziehung in PostgreSQL können Sie Daten effizient organisieren und leichter verarbeiten. Diese Beziehung ist eine der nützlichsten und leistungsfähigsten Funktionen relationaler Datenbanken.