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.
-
Ö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 .
-
Öppna dialogrutan för främmande nyckelrelationer
Välj Table Designer> Relationer... från toppmenyn.
-
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.
-
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.
-
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.
-
Släktskapet
Din relation kommer nu att visas korrekt i dialogrutan Utländska nyckelrelationer.
Klicka på Stäng .
-
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.