Ten artykuł nauczy Cię różnic między kluczem podstawowym a kluczem obcym. W tym artykule dowiesz się również, dlaczego oba te klucze są ważne, jeśli chodzi o utrzymanie relacyjnej struktury bazy danych.
wszystkie przykłady tej lekcji są oparte na Microsoft SQL Server Management Studio i Bazie Danych AdventureWorks2012. Możesz zacząć korzystać z tych bezpłatnych narzędzi za pomocą mojego przewodnika Pierwsze kroki za pomocą SQL Server.
czym się różni klucz podstawowy od klucza obcego?,
zanim zagłębimy się w różnice, najpierw zbadajmy podstawowe i obce CECHY KLUCZOWE. Zacznijmy od zapoznania się z kluczami podstawowymi.
klucze podstawowe
aby tabela mogła zostać zakwalifikowana jako tabela relacyjna, musi mieć klucz podstawowy.
klucz podstawowy składa się z jednej lub więcej kolumn, których dane zawarte w nich są używane do jednoznacznej identyfikacji każdego wiersza w tabeli. Możesz myśleć o nich jak o adresie. Jeśli wiersze w tabeli były skrzynkami pocztowymi, wtedy kluczem głównym byłaby lista adresów ulic.,
gdy klucz podstawowy składa się z wielu kolumn, dane z każdej kolumny są używane do określenia, czy wiersz jest unikalny.
aby być kluczem podstawowym, kilka warunków musi być prawdziwe. Po pierwsze, jak już wspomnieliśmy, kolumny muszą być wyjątkowe. Aby wyjaśnić, odnosimy się do danych w wierszach, a nie do samych nazw kolumn. Również żadna wartość w kolumnach nie może być pusta lub NULL.
definiując tabelę określasz klucz podstawowy. Tabela ma tylko jeden klucz podstawowy, a jej definicja jest obowiązkowa.
klucz podstawowy dla każdej tabeli jest przechowywany w indeksie., Indeks jest używany do wymuszania wymogu unikalności. Ułatwia to również odwoływanie się wartości klucza obcego do odpowiednich wartości klucza podstawowego, o czym dowiemy się w poniższej sekcji.
klucze obce
klucz obcy to zestaw jednej lub więcej kolumn w tabeli, który odnosi się do klucza podstawowego w innej tabeli. Nie ma żadnych specjalnych kodów, konfiguracji ani definicji tabel, które trzeba umieścić, aby oficjalnie „wyznaczyć” klucz obcy.
na poniższym diagramie spójrz na tabelę SalesOrderHeader. Kolumna SalesOrderHeader.,CurrencyRateID jest kluczem obcym, ponieważ jest związany z walutą.CurrencyRateID. / Align = „left” / CurrencyRateID jest głównym kluczem tabeli CurrencyRate.
klucze obce jako część kluczy podstawowych
spójrz na poniższy schemat. Która kolumna jest kluczem obcym?
jeśli powiedziałeś, że to PersonPhone.,Biznesentitiid to masz rację. Powodem, dla którego jest to klucz obcy, jest to, że odnosi się do klucza podstawowego, osoby./ Align = „left” /
Business to nie tylko klucz obcy, ale także klucz podstawowy firmy PersonPhone. Głównym kluczem PersonPhone table jest połączenie Business Numbertyid, Phonenumbertypeid i PhoneNumberTypeID.
zgadzam się, że jest to mylące, ale jest dozwolone i nie jest to zła praktyka.
w przeciwieństwie do kluczy podstawowych, klucze obce mogą zawierać zduplikowane wartości. Jest również OK, aby zawierały wartości NULL.,
indeksy nie są tworzone automatycznie dla kluczy obcych, jednak jako DBA można je zdefiniować.
tabela może zawierać więcej niż jeden klucz obcy. W tabeli PersonPhone można znaleźć drugi klucz obcy (patrz odpowiedź na końcu artykułu)?
Wyszukiwanie kluczy podstawowych i obcych w Object Explorer
Kiedy używasz SSMS, znajdziesz wiele przydatnych informacji w Object explorer. Nie musisz kopać głęboko, aby znaleźć główne klucze. Po wyświetleniu kolumn tabeli, ale kliknięciu folderu kolumny, kolumny klucza podstawowego mają złote klucze obok nich.,
Ponadto, jeśli którykolwiek z kluczy obcych jest zdefiniowany w ograniczeniach kluczy obcych, o których dowiemy się w poniższej sekcji, Kolumny te mają FK po oni. Są one zakreślone na Zielono na powyższym diagramie.
ograniczenia klucza obcego
niektóre systemy zarządzania bazami danych, takie jak SQL Server, umożliwiają konfigurowanie ograniczeń klucza obcego. Pomagają one wyegzekwować integralność odniesienia., W najprostszej formie ograniczenie klucza obcego uniemożliwia wprowadzanie wartości, których nie ma w kluczu głównym powiązanej tabeli.
używając pierwszego diagramu jako naszego przykładu, nie możesz wprowadzić SalesOrderHeader.CurrencyRateID, jeśli nie istnieje jeszcze w tabeli CurrencyRate.
te ograniczenia wchodzą w życie na kilka sposobów:
- uniemożliwiają zmianę wartości klucza obcego na taką, która nie istnieje jako wartość w kluczu głównym powiązanej tabeli.
- uniemożliwiają usunięcie wiersza z tabeli kluczy podstawowych. To powstrzymuje cię przed tworzeniem rejestrów osieroconych., Zapisy osierocone są opisane jako ” zapisy dzieci bez rodziców.”
- uniemożliwiają dodanie wartości klucza obcego, która nie istnieje w kluczu podstawowym.
podsumowując, ograniczenia wymuszają zależność między tablicami klucza głównego i obcego.
porównanie kluczy podstawowych z kluczami obcymi
podsumowując tutaj znajduje się porównanie kluczy podstawowych z kluczami obcymi
odpowiedź na pytanie: wcześniej poprosiliśmy Cię o zidentyfikowanie drugiego klucza obcego w tabeli PersonPhone. Prawidłowa odpowiedź to PhoneNumberTypeID.
Dodaj komentarz