sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server 2016:Skapa en relation

Du kan skapa en relation mellan tabeller genom att använda GUI- eller SQL-skriptet. Här visar jag båda metoderna.

I relationsdatabasdesign, en relation är där två eller flera tabeller länkas samman eftersom de innehåller relaterade data. Detta gör det möjligt för användare att köra frågor för relaterade data över flera tabeller.

Här kommer vi att skapa följande relationer.

Metoden

Så här gör vi:

  • Vi använder SQL för att skapa Album tabell och en relation.
  • Vi använder GUI för att skapa den andra relationen.

På så sätt kommer du att se båda metoderna för att skapa en relation.

Vi behöver bara skapa en tabell eftersom vi redan har skapat två av dessa tabeller tidigare i denna handledning ( Artists tabellen via GUI och genrerna tabell med SQL).

Skapa en relation med SQL

Öppna ett nytt frågefönster i SSMS och kör följande kod:

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    
);

Den första delen av den satsen skapar tabellen.

Den sista delen definierar relationen. Den här delen:

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

De två första raderna skapar relationen. De skapar en främmande nyckel-begränsning mellan Albums.ArtistId kolumnen och Artists.ArtistId kolumn.

De sista två raderna anger vad SQL Server ska göra om någon försöker ta bort eller uppdatera en överordnad post som refereras av en post i den underordnade tabellen. I det här fallet, NO ACTION betyder att raderingen/uppdateringen inte kommer att genomföras. Användaren får bara ett felmeddelande.

Du kan ändra detta till ON DELETE CASCADE om du vill kunna radera föräldern och barnet på en gång (dvs raderingen kommer att kaskaderas från föräldern till barnet). Samma logik gäller för uppdateringar, genom att använda ON UPDATE CASADE .

NO ACTION är standardvärdet, så vi kunde ha klarat oss utan de två sista kodraderna. Men jag inkluderade det eftersom det är en viktig faktor att tänka på när man skapar begränsningar för främmande nyckel.

Vad är en utländsk nyckelbegränsning?

En främmande nyckelbegränsning definierar en relation mellan denna tabell och en annan tabell. När du skapar en främmande nyckel-begränsning skapar du den mot en specifik kolumn i underordet tabell, för att referera till en specifik kolumn i förälder bord.

Detta gör kolumnen i den underordnade tabellen till en främmande nyckel . Begränsningen säkerställer att alla värden som går in i denna (främmande nyckel) kolumn motsvarar ett värde i primärnyckelkolumnen i den överordnade tabellen. Om någon försöker ange ett värde som inte överensstämmer med ett värde i den överordnade tabellens primärnyckelkolumn, kommer SQL Server att ge ett felmeddelande.

Detta hjälper till att upprätthålla referensintegritet. Det hindrar oss från att ha föräldralösa register (underordnade register som inte har någon förälder). Eller i vårt exempel, album som inte är associerade med någon artist.

Skapa en relation via GUI

Nu ska vi skapa den andra relationen via SQL Server Management Studios GUI.

Det hade varit lättare att inkludera detta i skriptet ovan men jag ville visa båda metoderna för att skapa en relation.

  1. Öppna underordnade tabellen i tabelldesignern

    Högerklicka på den underordnade tabellen (våra nyskapade Album). tabell) och välj Design från den sammanhangsberoende menyn.

    Om du inte kan se din nyskapade tabell i objektbläddraren måste du förmodligen uppdatera objektbläddraren.

    Högerklicka på Tabell nod och välj Uppdatera .

  2. Öppna dialogrutan för främmande nyckelrelationer

    Välj Table Designer> Relationer... från toppmenyn.

  3. Lägg till relationen

    Dialogrutan Relationer med främmande nyckel visar alla befintliga relationer för tabellen. Vi kan se relationen som vi etablerade precis innan, när vi skapade tabellen.

    Klicka på Lägg till för att lägga till en annan relation.

  4. Välj Specifikationer för tabeller och kolumner

    En ny relation visas ovanför den andra i Vald relation lista med namnet FK_Albums_Albums .

    Se till att den nya relationen är vald, klicka på Tabell- och kolumnspecifikation i den högra rutan. En ellips visas till höger om fastigheten.

    Klicka på ellipserna (... ) för att starta dialogrutan Tabeller och kolumner.

  5. Dialogrutan Tabeller och kolumner

    Här väljer du den primära nyckeltabellen i den vänstra rutan och den främmande nyckeltabellen till höger.

    • Under Primärnyckeltabell: välj Genrer som tabellen och GenreId som kolumn.
    • Under Tabell med främmande nyckel: välj Album som tabellen och GenreId som kolumn.

    Klicka på OK .

    SQL Server kommer att föreslå ett namn för relationen. Du kan redigera detta om du vill. Annars låter du det vara som det är.

  6. Släktskapet

    Din relation kommer nu att visas korrekt i dialogrutan Utländska nyckelrelationer.

    Klicka på Stäng .

  7. Spara förhållandet

    Din relation kommer inte att sparas förrän du sparar tabellen. När du sparar tabellen får du förmodligen en varning om att två bord kommer att sparas. Detta är att vänta, eftersom förhållandet påverkar två tabeller.

    Klicka på Ja för att spara båda tabellerna.

    Om du väljer Table Designer> Relationer... för den överordnade tabellen ser du även relationen där.


  1. Nyckelindikatorer för problemdesign

  2. Hur binder man SQL-variabler i PHP?

  3. Fel vid försök att hämta text för fel ORA-01804

  4. Hur RLIKE-operatören fungerar i MySQL