Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL Server 2016:Utwórz relację

Relację między tabelami można utworzyć za pomocą skryptu GUI lub SQL. Tutaj pokazuję obie metody.

W projekcie relacyjnej bazy danych powiązanie to miejsce, w którym co najmniej dwie tabele są połączone ze sobą, ponieważ zawierają powiązane dane. Umożliwia to użytkownikom uruchamianie zapytań o powiązane dane w wielu tabelach.

Tutaj stworzymy następujące relacje.

Metoda

Oto jak to zrobimy:

  • Będziemy używać SQL do tworzenia albumów tabela i jedna relacja.
  • Będziemy używać GUI aby stworzyć drugą relację.

W ten sposób zobaczysz obie metody tworzenia relacji.

Musimy tylko utworzyć jedną tabelę, ponieważ już wcześniej stworzyliśmy dwie z tych tabel w tym samouczku ( Artyści tabela za pośrednictwem GUI i Gatunki tabela za pomocą SQL).

Utwórz relację za pomocą SQL

Otwórz nowe okno zapytania w SSMS i uruchom następujący 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    
);

Pierwsza część tej instrukcji tworzy tabelę.

Ostatnia część określa relację. Ta część:

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

Pierwsze dwie linie tworzą relację. Tworzą ograniczenie klucza obcego między Albums.ArtistId kolumna i Artists.ArtistId kolumna.

Ostatnie dwa wiersze określają, co powinien zrobić program SQL Server, jeśli ktoś próbuje usunąć lub zaktualizować rekord nadrzędny, do którego odwołuje się rekord w tabeli podrzędnej. W takim przypadku NO ACTION oznacza, że ​​usuwanie/aktualizacja nie będzie kontynuowana. Użytkownik po prostu otrzyma błąd.

Możesz to zmienić na ON DELETE CASCADE jeśli chcesz mieć możliwość usunięcia rodzica i dziecka za jednym razem (tj. usunięcie będzie kaskadowe od rodzica do dziecka). Ta sama logika dotyczy aktualizacji, używając ON UPDATE CASADE .

NO ACTION jest wartością domyślną, więc mogliśmy obejść się bez tych dwóch ostatnich wierszy kodu. Jednak uwzględniłem to, ponieważ jest to ważny czynnik, o którym należy pomyśleć podczas tworzenia ograniczeń kluczy obcych.

Co to jest ograniczenie klucza obcego?

ograniczenie klucza obcego definiuje relację między tą tabelą a inną tabelą. Kiedy tworzysz ograniczenie klucza obcego, tworzysz je względem określonej kolumny w dziecko tabeli, aby odwoływać się do określonej kolumny w rodzicu tabela.

To sprawia, że ​​kolumna w tabeli podrzędnej jest kluczem obcym . Ograniczenie zapewnia, że ​​każda wartość, która trafia do tej kolumny (klucza obcego), odpowiada wartości w kolumnie klucza podstawowego tabeli nadrzędnej. Jeśli ktoś spróbuje wprowadzić wartość, która nie odpowiada wartości w kolumnie klucza podstawowego tabeli nadrzędnej, SQL Server zgłosi błąd.

Pomaga to wymusić integralność referencyjną. Uniemożliwia nam to osierocone rekordy (rekordy podrzędne, które nie mają rodzica). Lub w naszym przykładzie albumy, które nie są powiązane z żadnym wykonawcą.

Utwórz związek za pomocą GUI

Teraz utworzymy drugą relację za pomocą graficznego interfejsu użytkownika SQL Server Management Studio.

Byłoby łatwiej uwzględnić to w powyższym skrypcie, ale chciałem zademonstrować obie metody tworzenia relacji.

  1. Otwórz tabelę podrzędną w kreatorze tabel

    Kliknij prawym przyciskiem myszy tabelę podrzędną (nasze nowo utworzone Albumy tabeli) i wybierz Projekt z menu kontekstowego.

    Jeśli nie widzisz swojej nowo utworzonej tabeli w przeglądarce obiektów, prawdopodobnie musisz odświeżyć przeglądarkę obiektów.

    Kliknij prawym przyciskiem myszy Tabele węzeł i wybierz Odśwież .

  2. Otwórz okno dialogowe relacji klucza obcego

    Wybierz Projektant tabel> Relacje... z górnego menu.

  3. Dodaj związek

    W oknie dialogowym Relacje klucza obcego zostaną wyświetlone wszystkie istniejące relacje dla tabeli. Możemy zobaczyć relację, którą nawiązaliśmy tuż przed, kiedy tworzyliśmy tabelę.

    Kliknij Dodaj aby dodać kolejną relację.

  4. Wybierz specyfikację tabel i kolumn

    Nowa relacja pojawia się nad drugą w Wybranym związku lista o nazwie FK_Albums_Albums .

    Upewniając się, że nowa relacja została wybrana, kliknij Specyfikacja tabel i kolumn w prawym okienku. Po prawej stronie właściwości pojawi się wielokropek.

    Kliknij wielokropek (... ), aby uruchomić okno dialogowe Tabele i kolumny.

  5. Okno dialogowe Tabele i kolumny

    Tutaj wybierasz tabelę kluczy podstawowych w lewym okienku i tabelę kluczy obcych po prawej stronie.

    • W tabeli kluczy podstawowych: wybierz Gatunki jako tabela i GenreId jako kolumna.
    • W tabeli kluczy obcych: wybierz Albumy jako tabela i GenreId jako kolumna.

    Kliknij OK .

    SQL Server zasugeruje nazwę relacji. Możesz to edytować, jeśli chcesz. W przeciwnym razie zostaw to tak, jak jest.

  6. Związek

    Twoja relacja będzie teraz poprawnie wyświetlana w oknie dialogowym Relacje klucza obcego.

    Kliknij Zamknij .

  7. Zapisywanie związku

    Twój związek nie zostanie zapisany, dopóki nie zapiszesz tabeli. Gdy zapiszesz tabelę, prawdopodobnie otrzymasz ostrzeżenie, że zostaną zapisane dwie tabele. Należy się tego spodziewać, ponieważ relacja wpływa na dwie tabele.

    Kliknij Tak aby zapisać obie tabele.

    Jeśli wybierzesz Projektant tabel> Relacje... dla tabeli nadrzędnej, zobaczysz tam również relację.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Automatyczne usuwanie zablokowanych procesów w MS SQL Server

  2. Wiesz, kiedy ponowić próbę lub zakończyć się niepowodzeniem podczas wywoływania programu SQL Server z C#?

  3. Pogrupuj sql według versus different

  4. Egzamin dotyczący administrowania bazą danych Azure SQL Database (DP-300)

  5. 3 obszary, które skorzystają na wykorzystaniu narzędzia do monitorowania wydajności serwera SQL