sql >> Databáze >  >> RDS >> Sqlserver

SQL Server 2016:Vytvořte vztah

Vztah mezi tabulkami můžete vytvořit pomocí GUI nebo skriptu SQL. Zde demonstruji obě metody.

V návrhu relační databáze vztah je místo, kde jsou dvě nebo více tabulek propojeny, protože obsahují související data. To umožňuje uživatelům spouštět dotazy na související data ve více tabulkách.

Zde vytvoříme následující vztahy.

Metoda

Uděláme to takto:

  • Budeme používat SQL vytvořit Alba tabulka a jeden vztah.
  • Budeme používat GUI vytvořit ten druhý vztah.

Tímto způsobem uvidíte oba způsoby vytváření vztahu.

Potřebujeme vytvořit pouze jednu tabulku, protože dvě z těchto tabulek jsme již vytvořili dříve v tomto tutoriálu ( Umělci tabulky přes GUI a Žánry tabulky pomocí SQL).

Vytvořte vztah pomocí SQL

Otevřete nové okno dotazu v SSMS a spusťte následující kód:

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

První část tohoto příkazu vytvoří tabulku.

Poslední část definuje vztah. Tato část:

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

První dva řádky vytvářejí vztah. Vytvářejí omezení cizího klíče mezi Albums.ArtistId a Artists.ArtistId sloupec.

Poslední dva řádky určují, co má SQL Server udělat, pokud se někdo pokusí odstranit nebo aktualizovat nadřazený záznam, na který odkazuje záznam v podřízené tabulce. V tomto případě NO ACTION znamená, že smazání/aktualizace nebude pokračovat. Uživatel pouze dostane chybu.

Můžete to změnit na ON DELETE CASCADE pokud chcete mít možnost odstranit rodiče a potomka najednou (tj. odstranění bude probíhat kaskádově od rodiče k potomkovi). Stejná logika platí pro aktualizace pomocí ON UPDATE CASADE .

NO ACTION je výchozí hodnota, takže jsme se mohli obejít bez posledních dvou řádků kódu. Nicméně jsem to zahrnul, protože je to důležitý faktor, na který je třeba myslet při vytváření omezení cizího klíče.

Co je to omezení cizího klíče?

omezení cizího klíče definuje vztah mezi touto tabulkou a jinou tabulkou. Když vytvoříte omezení cizího klíče, vytvoříte jej proti konkrétnímu sloupci v podřízeném tabulky, chcete-li odkazovat na konkrétní sloupec v nadřazeném tabulka.

Díky tomu bude sloupec v podřízené tabulce cizí klíč . Omezení zajišťuje, že jakákoli hodnota, která jde do tohoto sloupce (cizí klíč), odpovídá hodnotě ve sloupci primárního klíče nadřazené tabulky. Pokud se někdo pokusí zadat hodnotu, která neodpovídá hodnotě ve sloupci primárního klíče nadřazené tabulky, SQL Server vyvolá chybu.

To pomáhá vynutit referenční integritu. Brání nám to mít osiřelé záznamy (podřízené záznamy, které nemají rodiče). Nebo v našem příkladu alba, která nejsou spojena s žádným interpretem.

Vytvořte vztah prostřednictvím GUI

Nyní vytvoříme další vztah prostřednictvím GUI SQL Server Mangement Studio.

Bylo by jednodušší to zahrnout do výše uvedeného skriptu, ale chtěl jsem předvést oba způsoby vytváření vztahu.

  1. Otevřete podřízenou tabulku v Návrháři tabulek

    Klikněte pravým tlačítkem na podřízenou tabulku (naše nově vytvořená Alba tabulka) a vyberte Návrh z kontextové nabídky.

    Pokud svou nově vytvořenou tabulku nevidíte v prohlížeči objektů, pravděpodobně budete muset prohlížeč objektů aktualizovat.

    Klikněte pravým tlačítkem na Tabulky uzel a vyberte Obnovit .

  2. Otevřete dialogové okno Vztahy s cizím klíčem

    Vyberte Návrhář tabulek> Vztahy... z horní nabídky.

  3. Přidat vztah

    Dialogové okno Vztahy cizích klíčů vám zobrazí všechny existující vztahy pro tabulku. Můžeme vidět vztah, který jsme navázali těsně předtím, když jsme vytvořili tabulku.

    Klikněte na Přidat přidat další vztah.

  4. Vyberte Specifikace tabulek a sloupců

    Nový vztah se objeví nad druhým v Vybraný vztah seznam s názvem FK_Albums_Albums .

    Ujistěte se, že je vybrán nový vztah, klikněte na Specifikace tabulek a sloupců v pravém panelu. Napravo od vlastnosti se zobrazí elipsy.

    Klikněte na elipsy (... ) otevřete dialogové okno Tabulky a sloupce.

  5. Dialogové okno Tabulky a sloupce

    Zde vyberete tabulku primárních klíčů v levém podokně a tabulku cizích klíčů vpravo.

    • V části Tabulka primárních klíčů: vyberte Žánry jako tabulka a GenreId jako sloupec.
    • V části Tabulka cizích klíčů: vyberte Alba jako tabulka a GenreId jako sloupec.

    Klikněte na OK .

    SQL Server navrhne název vztahu. Pokud chcete, můžete to upravit. Jinak to nechte tak, jak to je.

  6. Vztah

    Váš vztah se nyní zobrazí správně v dialogovém okně Vztahy cizích klíčů.

    Klikněte na Zavřít .

  7. Uložení vztahu

    Váš vztah nebude uložen, dokud neuložíte tabulku. Když tabulku uložíte, pravděpodobně dostanete varování, že budou uloženy dvě tabulky. To se dá očekávat, protože vztah ovlivňuje dvě tabulky.

    Klikněte na Ano pro uložení obou tabulek.

    Pokud vyberete Návrhář tabulek> Vztahy... u nadřazené tabulky tam také uvidíte vztah.


  1. Co NENÍ logický operátor na serveru SQL - SQL Server / Výukový program TSQL část 121

  2. Jak funguje sys.dm_exec_describe_first_result_set_for_object na serveru SQL Server

  3. Nasazení certifikátu pro šifrované připojení SQL Server

  4. Oracle Database 21c pro platformy Linux