Różnica między kluczem obcym a kluczem podstawowym polega na tym, że klucz obcy jest kolumną lub zestawem kolumn, które odnoszą się do klucza podstawowego lub klucza kandydującego innej tabeli, podczas gdy klucz podstawowy jest kolumną lub zestawem kolumn które mogą być użyte do jednoznacznej identyfikacji wiersza w tabeli.
Kolumna lub zestaw kolumn, których można użyć do zidentyfikowania lub uzyskania dostępu do wiersza lub zestawu wierszy w bazie danych, nazywa się kluczem. Klucz podstawowy w relacyjnej bazie danych to kombinacja kolumn w tabeli, która jednoznacznie identyfikuje wiersz tabeli. Klucz obcy w relacyjnej bazie danych to pole w tabeli, które odpowiada kluczowi podstawowemu innej tabeli. Klucz obcy jest używany do krzyżowania tabel referencyjnych.
Co to jest klucz obcy?
Klucz obcy to ograniczenie referencyjne między dwiema tabelami. Identyfikuje kolumnę lub zestaw kolumn w jednej tabeli, zwanej tabelą odniesienia, która odwołuje się do zestawu kolumn w innej tabeli, zwanej tabelą odniesienia. Klucz obcy lub kolumny w tabeli odniesienia musi być kluczem podstawowym lub kluczem kandydującym (kluczem, który może być używany jako klucz podstawowy) w tabeli, do której się odwołuje. Ponadto klucze obce umożliwiają łączenie danych w kilku tabelach. Dlatego klucz obcy nie może zawierać wartości, które nie występują w tabeli, do której się odwołuje. Następnie odwołanie dostarczone przez klucz obcy pomaga połączyć informacje w kilku tabelach, co stałoby się niezbędne w przypadku znormalizowanych baz danych. Wiele wierszy w tabeli odniesienia może odnosić się do jednego wiersza w tabeli odniesienia.
Rysunek 01: Mapowanie klucza obcego
W standardzie ANSI SQL ograniczenie FOREIGN KEY definiuje klucze obce. Ponadto możliwe jest zdefiniowanie kluczy obcych podczas tworzenia samej tabeli. Tabela może mieć wiele kluczy obcych, które mogą odwoływać się do różnych tabel.
Co to jest klucz podstawowy?
Klucz podstawowy to kolumna lub kombinacja kolumn, która jednoznacznie definiuje wiersz w tabeli relacyjnej bazy danych. Tabela może mieć co najwyżej jeden klucz podstawowy. Klucz podstawowy wymusza niejawne ograniczenie NOT NULL. Dlatego kolumna z kluczem podstawowym nie może zawierać wartości NULL. Klucz podstawowy może być normalnym atrybutem w tabeli, który jest gwarantowany jako unikatowy, taki jak numer ubezpieczenia społecznego, lub może być unikatową wartością wygenerowaną przez system zarządzania bazą danych, taką jak unikatowy identyfikator globalny (GUID) w programie Microsoft SQL Server.
Rysunek 02: Klucz podstawowy
Ponadto ograniczenie PRIMARY KEY w standardzie ANSI SQL definiuje klucze podstawowe. Możliwe jest również zdefiniowanie klucza podstawowego podczas tworzenia tabeli. Oprócz tego SQL pozwala, aby klucz podstawowy składał się z jednej lub więcej kolumn, a każda kolumna zawarta w kluczu podstawowym jest niejawnie zdefiniowana jako NOT NULL. Ale niektóre systemy zarządzania bazami danych wymagają, aby kolumny klucza podstawowego jawnie NIE NULL.
Jaka jest różnica między kluczem obcym a kluczem podstawowym?
Klucz obcy a klucz podstawowy |
|
Klucz obcy to kolumna lub grupa kolumn w tabeli relacyjnej bazy danych, która zapewnia powiązanie między danymi w dwóch tabelach. | Klucz podstawowy to specjalna kolumna tabeli relacyjnej bazy danych lub kombinacja wielu kolumn, która pozwala jednoznacznie zidentyfikować wszystkie rekordy tabeli. |
NULL | |
Klucz obcy akceptuje wartość NULL. | Wartość klucza podstawowego nie może mieć wartości NULL. |
Liczba klawiszy | |
Tabela może mieć wiele kluczy obcych. | Tabela może mieć tylko jeden klucz podstawowy. |
Powielanie | |
Krótki mogą mieć zduplikowaną wartość atrybutu klucza obcego. | Dwie krotki w relacji nie mogą mieć zduplikowanych wartości dla atrybutu klucza podstawowego. |
Podsumowanie – klucz obcy a klucz podstawowy
Różnica między kluczem obcym a kluczem podstawowym polega na tym, że klucz obcy jest kolumną lub zestawem kolumn, które odnoszą się do klucza podstawowego lub klucza kandydującego innej tabeli, podczas gdy klucz podstawowy jest kolumną lub zestawem kolumn, które może służyć do jednoznacznej identyfikacji wiersza w tabeli.