Czy w SQL są to klucze złożone czy złożone?


31

O SQL (przetwarzanie danych / bazy danych):

Kiedy mamy w tabeli dwa lub więcej pól, które razem jednoznacznie identyfikują jego rekordy, jaki jest właściwy sposób nazywania ich? Klucze kompozytowe czy złożone?

Widziałem w Internecie oba zastosowania, więc nie jestem do końca pewien.


1
Sprawdź te dwa trendy w wyszukiwarce Google: goo.gl/5u4XdR .
igordcard

Odpowiedzi:


32

Zarówno klucz złożony, jak i klucz złożony opisują klucz kandydujący z więcej niż jednym atrybutem. Według Relational Database Dictionary (CJDate) oznaczają to samo.

W modelowaniu ER termin „klucz złożony” ma również bardziej szczegółowe znaczenie. Oznacza klucz, którego atrybutami składowymi są odniesienia do kluczy w innych jednostkach - tzn. Klucz złożony tworzy relację identyfikującą. Dla większości celów nie jest to szczególnie przydatna ani ważna koncepcja, więc terminy kompozyt / związek są często traktowane jako wymienne. Prawdopodobnie najlepiej trzymać się „klucza złożonego”, chyba że masz na myśli konkretnie koncepcję modelowania klucza złożonego.


3
„W modelowaniu ER termin„ klucz złożony ”ma również bardziej konkretne znaczenie” - brzmi przekonująco :) Ale czy masz cytat?
poniedziałek

Więc klucz złożony byłby kluczem zwykle znajdowanym w tabeli połączeń używanej na przykład dla wielu relacji?
Josh P

19

Nadal nie jestem pewien, dlaczego http://en.wikipedia.org/wiki/Compound_key nie został skonsultowany. Bardzo wyraźnie stwierdza (i jest poprawny):

W projekcie bazy danych klucz złożony to klucz składający się z 2 lub więcej atrybutów, które jednoznacznie identyfikują wystąpienie jednostki. Każdy atrybut składający się na klucz złożony jest osobnym kluczem prostym.

Jest to często mylone z kluczem złożonym, przy czym chociaż jest to również klucz składający się z 2 lub więcej atrybutów, które jednoznacznie identyfikują wystąpienie jednostki, przynajmniej jeden atrybut składający się na klucz złożony nie jest sam w sobie kluczem prostym.

Klucz złożony składa się z elementów, które mogą, ale nie muszą być kluczami obcymi. Przykład: w tabeli szczegółów transakcji kluczem jest (TransactionId, ItemNumber). Szczegół transakcji jest subtelnością transakcji. TransactionId to klucz obcy, odwołujący się do tabeli Transakcje. ItemNumber nie jest sam w sobie kluczem. Tylko jednoznacznie identyfikuje pozycję w kontekście pojedynczej transakcji.

Klucz złożony to klucz, w którym dowolna część klucza jest kluczem obcym. Przykład: w systemie rezerwacji hotelowej rezerwacja ma złożony klucz (GuestId, HotelId, ArrivalDate). GuestId identyfikuje gościa i odwołuje się do tabeli gości. HotelId identyfikuje hotel i odwołuje się do tabeli hoteli. Data przyjazdu określa datę. Może być, ale nie musi, tabela Daty, do której się odwołuje, ale w obu przypadkach identyfikuje ona jednostkę (datę).

Warto również zauważyć, że ten faktoid: prosty klucz jest kluczem złożonym z jednej kolumny, podczas gdy klucz złożony składa się z dwóch lub więcej kolumn.


4
jcolebrand: „Klucz złożony to klucz, dzięki któremu dowolna część klucza może zidentyfikować rekord”. To jest niepoprawne Z definicji klucz musi być nieredukowalny (minimalny superklucz). Jeśli tylko niektóre atrybuty są wymagane do jednoznacznej identyfikacji krotki, to z definicji jest to superklucz, a nie klucz.
nvogel

a) Cytowałem stronę Wikipedii. b) Zwykle się z tym zgadzam. Każda część klucza złożonego jest sama kluczem prostym. Nie mam nic przeciwko, jeśli nazwiesz to superkey. Nie wierzę jednak, że wszystkie złożone klucze mogą być superkluczami. Ergo, trzymam się tego, co jest w artykule na Wikipedii i trzymam się definicji, którą zacytowałem. Mogę pobrać i opublikować książkę do projektu bazy danych w twardej oprawie, jeśli to cię uszczęśliwi.
jcolebrand

2
Myślę, że nie trafiłeś w odpowiedni punkt, a mianowicie, że klucz złożony składa się z kluczy innych podmiotów . Właściwy podzbiór klucza nie może być kluczem. Jak zapewne wiesz, klucz musi być minimalny (w tabeli, której jest kluczem) - więc jeśli usuniesz z niego jakiś atrybut, nie będzie już kluczem.
nvogel

2
„Klucz” to skrót od „klucz kandydata”. Podręczna definicja klucza kandydującego jest i zawsze była „minimalnym superkluczem”. Odniesienia: Słownik terminów str17 lub Księga Alicji, jeśli masz wątpliwości co do definicji klucza.
nvogel

1
Definicje „ klucza złożonego ” i „ klucza witryny ” na stronie Wikipedii zostały zmienione w dniu 13 lipca 2014 r. I nie są już zgodne z definicjami zawartymi w tej odpowiedzi. (Nie zmieniłem definicji, tylko wskazując, że definicje nie pasują teraz.)
spencer7593,

3

W języku angielskim są to „klucze złożone”. Na przykład spójrz na stronę MSDN (wystarczy każde wyszukiwanie zawierające „klucz złożony SQL”).

http://www.google.com/search?q=sql+composite+key+site:msdn.microsoft.com

Zakładając, że pytanie dotyczy relacyjnych baz danych, szukałem w Wikipedii „neutralnej” definicji :

Klucz złożony to klucz złożony z dwóch lub więcej atrybutów w tabeli, które (razem) jednoznacznie identyfikują rekord


1
Bez źródła, bez odniesienia, bez linku, bez niczego… zła odpowiedź.


google.com/search?q=sql+composite+key+definition doprowadzi cię do zillionu stron mówiących o SQL Composite Keys
Hemme

1
podobnie będzie wyszukiwać w Google klucz złożony
jcolebrand

3
To jest naukowe: googlefight.com/…
Hemme

3

Klucz złożony składa się z więcej niż jednego atrybutu w celu jednoznacznej identyfikacji wystąpienia encji. Różni się to od klucza złożonego tym, że jeden lub więcej atrybutów, które składają się na klucz, nie są prostymi kluczami same w sobie.

Na przykład masz bazę danych z kolekcją płyt CD. Jeden z elementów nazywa się ścieżkami, które zawierają szczegóły ścieżek na płycie CD. Ma złożony klucz z nazwą płyty CD, numerem ścieżki.


2

Wydaje mi się, że klucz złożony to nadzbiór zawierający klucze złożone. Jeśli zaakceptujemy, że klucz złożony składa się z więcej niż jednego atrybutu (dowolnego rodzaju), a klucz złożony składa się z więcej niż jednego klucza prostego. Klucz złożony jest rodzajem klucza złożonego o bardziej szczegółowym znaczeniu, ale termin „klucz złożony” jest zawsze odpowiedni do użycia.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.