Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server 2016:Erstellen Sie eine Beziehung

Sie können eine Beziehung zwischen Tabellen erstellen, indem Sie die GUI oder das SQL-Skript verwenden. Hier demonstriere ich beide Methoden.

Im relationalen Datenbankdesign eine Beziehung Hier werden zwei oder mehr Tabellen miteinander verknüpft, weil sie verwandte Daten enthalten. Dadurch können Nutzer Abfragen für verwandte Daten über mehrere Tabellen hinweg ausführen.

Hier erstellen wir die folgenden Beziehungen.

Die Methode

So gehen wir vor:

  • Wir verwenden SQL um die Alben zu erstellen Tabelle und eine Beziehung.
  • Wir verwenden die GUI um die andere Beziehung zu erstellen.

Auf diese Weise können Sie beide Methoden zum Erstellen einer Beziehung sehen.

Wir müssen nur eine Tabelle erstellen, da wir bereits zwei dieser Tabellen zuvor in diesem Tutorial erstellt haben (die Artists Tabelle über die GUI und die Genres Tabelle mit SQL).

Erstellen Sie eine Beziehung mit SQL

Öffnen Sie ein neues Abfragefenster in SSMS und führen Sie den folgenden Code aus:

CREATE TABLE Albums
 (
  AlbumId int IDENTITY(1,1) NOT NULL PRIMARY KEY,
  AlbumName nvarchar(255) NOT NULL,
  ReleaseDate date NOT NULL,
  ArtistId int NOT NULL,
  GenreId int NOT NULL
  
  CONSTRAINT FK_Albums_Artists FOREIGN KEY (ArtistId)     
    REFERENCES dbo.Artists (ArtistId)     
    ON DELETE NO ACTION    
    ON UPDATE NO ACTION    
);

Der erste Teil dieser Anweisung erstellt die Tabelle.

Der letzte Teil definiert die Beziehung. Dieser Teil:

CONSTRAINT FK_Albums_Artists FOREIGN KEY (ArtistId)     
    REFERENCES dbo.Artists (ArtistId)     
    ON DELETE NO ACTION    
    ON UPDATE NO ACTION

Die ersten beiden Zeilen stellen die Beziehung her. Sie erstellen eine Fremdschlüsseleinschränkung zwischen Albums.ArtistId Spalte und die Artists.ArtistId Spalte.

Die letzten beiden Zeilen geben an, was SQL Server tun soll, wenn jemand versucht, einen übergeordneten Datensatz zu löschen oder zu aktualisieren, auf den von einem Datensatz in der untergeordneten Tabelle verwiesen wird. In diesem Fall NO ACTION bedeutet, dass das Löschen/Aktualisieren nicht durchgeführt wird. Der Benutzer erhält nur eine Fehlermeldung.

Sie könnten dies in ON DELETE CASCADE ändern wenn Sie in der Lage sein möchten, das Elternteil und das Kind auf einmal zu löschen (d. h. der Löschvorgang wird vom Elternteil zum Kind kaskadiert). Die gleiche Logik gilt für Updates, indem ON UPDATE CASADE verwendet wird .

NO ACTION ist der Standardwert, also hätten wir auf die letzten beiden Codezeilen verzichten können. Ich habe es jedoch aufgenommen, weil es ein wichtiger Faktor ist, über den man nachdenken muss, wenn man Fremdschlüsseleinschränkungen erstellt.

Was ist eine Fremdschlüsselbeschränkung?

Eine Fremdschlüsseleinschränkung definiert eine Beziehung zwischen dieser Tabelle und einer anderen Tabelle. Wenn Sie eine Fremdschlüsseleinschränkung erstellen, erstellen Sie sie für eine bestimmte Spalte im untergeordneten Element Tabelle, um auf eine bestimmte Spalte in parent zu verweisen Tabelle.

Dadurch wird die Spalte in der untergeordneten Tabelle zu einem Fremdschlüssel . Die Einschränkung stellt sicher, dass jeder Wert, der in diese (Fremdschlüssel-)Spalte einfließt, einem Wert in der Primärschlüsselspalte der übergeordneten Tabelle entspricht. Wenn jemand versucht, einen Wert einzugeben, der keinem Wert in der Primärschlüsselspalte der übergeordneten Tabelle entspricht, gibt SQL Server einen Fehler aus.

Dies hilft, die referenzielle Integrität zu erzwingen. Es verhindert, dass wir verwaiste Datensätze haben (untergeordnete Datensätze, die keinen übergeordneten Datensatz haben). Oder in unserem Beispiel Alben, die keinem Interpreten zugeordnet sind.

Erstellen Sie eine Beziehung über die GUI

Jetzt erstellen wir die andere Beziehung über die GUI von SQL Server Management Studio.

Es wäre einfacher gewesen, dies in das obige Skript aufzunehmen, aber ich wollte beide Methoden zum Erstellen einer Beziehung demonstrieren.

  1. Öffnen Sie die untergeordnete Tabelle im Tabellendesigner

    Klicken Sie mit der rechten Maustaste auf die untergeordnete Tabelle (unsere neu erstellten Alben Tabelle) und wählen Sie Design aus dem Kontextmenü.

    Wenn Sie Ihre neu erstellte Tabelle nicht im Objektkatalog sehen können, müssen Sie den Objektkatalog wahrscheinlich aktualisieren.

    Klicken Sie mit der rechten Maustaste auf die Tabellen -Knoten und wählen Sie Aktualisieren .

  2. Öffnen Sie das Dialogfeld "Fremdschlüsselbeziehungen"

    Wählen Sie Table Designer> Beziehungen... aus dem oberen Menü.

  3. Fügen Sie die Beziehung hinzu

    Das Dialogfeld „Fremdschlüsselbeziehungen“ zeigt Ihnen alle vorhandenen Beziehungen für die Tabelle an. Wir können die Beziehung sehen, die wir kurz zuvor hergestellt haben, als wir die Tabelle erstellt haben.

    Klicken Sie auf Hinzufügen um eine weitere Beziehung hinzuzufügen.

  4. Tabellen- und Spaltenspezifikation auswählen

    Eine neue Beziehung erscheint über der anderen in der Ausgewählten Beziehung Liste mit dem Namen FK_Albums_Albums .

    Stellen Sie sicher, dass die neue Beziehung ausgewählt ist, und klicken Sie auf Tabellen- und Spaltenspezifikation im rechten Bereich. Rechts neben der Eigenschaft werden Auslassungspunkte angezeigt.

    Klicken Sie auf die Auslassungspunkte (... ), um das Dialogfeld „Tabellen und Spalten“ zu öffnen.

  5. Das Dialogfeld „Tabellen und Spalten“

    Hier wählen Sie im linken Bereich die Primärschlüsseltabelle und im rechten die Fremdschlüsseltabelle aus.

    • Unter Primärschlüsseltabelle: wählen Sie Genres als Tabelle und GenreId als Spalte.
    • Unter Fremdschlüsseltabelle: Wählen Sie Alben als Tabelle und GenreId als Spalte.

    Klicken Sie auf OK .

    SQL Server schlägt einen Namen für die Beziehung vor. Sie können dies bearbeiten, wenn Sie möchten. Andernfalls belassen Sie es so, wie es ist.

  6. Die Beziehung

    Ihre Beziehung wird jetzt korrekt im Dialogfeld Fremdschlüsselbeziehungen angezeigt.

    Klicken Sie auf Schließen .

  7. Die Beziehung retten

    Ihre Beziehung wird erst gespeichert, wenn Sie die Tabelle speichern. Wenn Sie die Tabelle speichern, erhalten Sie wahrscheinlich eine Warnung, dass zwei Tabellen gespeichert werden. Dies ist zu erwarten, da die Beziehung zwei Tabellen betrifft.

    Klicken Sie auf Ja um beide Tabellen zu speichern.

    Wenn Sie Table Designer> Beziehungen... auswählen für die übergeordnete Tabelle sehen Sie dort auch die Beziehung.