it-swarm.dev

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

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.

32
igordcard

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 (C.J. Data) 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 odnosi się to konkretnie do koncepcji modelowania klucza złożonego.

32
nvogel

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 encji. Każdy atrybut składający się na klucz złożony jest osobnym prostym kluczem.

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 bytu, 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 istnieć tabela Dates, do której się odwołuje, ale może ona identyfikować encję (datę) w obu kierunkach.

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.

20
jcolebrand

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 „neutralnej” definicji w Wikipedia :

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

3
Hemme

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ą samymi kluczami prostymi.

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.

3
dilbag koundal

Wydaje mi się, że klucz złożony to nadzbiór, który zawiera 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.

2
Tom Gnade