In SQL, si tratta di chiavi composite o composte?


31

Informazioni su SQL (Informatica / Database):

Quando abbiamo due o più campi in una tabella che, insieme, identificano i suoi record in modo univoco, qual è il modo corretto di chiamarli? Tasti compositi o composti?

Ho visto sul web entrambi gli usi quindi non ne sono davvero sicuro.


1
Dai un'occhiata a queste due tendenze della Ricerca Google: goo.gl/5u4XdR .
igordcard

Risposte:


32

Sia la chiave composita che la chiave composta descrivono una chiave candidata con più di un attributo. Secondo il Dizionario di database relazionale (CJDate) significano la stessa cosa.

Nella modellazione ER il termine "chiave composta" ha anche un significato più specifico. Significa una chiave i cui attributi costitutivi sono riferimenti a chiavi in ​​altre entità - cioè una chiave composta forma una relazione identificativa. Per la maggior parte degli scopi, questo non è un concetto particolarmente utile o importante, quindi i termini composito / composto sono spesso trattati come intercambiabili. Probabilmente è meglio attenersi alla "chiave composita" a meno che non ci si riferisca specificamente al concetto di modellazione ER di una chiave composta.


3
"Nella modellazione ER il termine" chiave composta "ha anche un significato più specifico" - Sembra convincente :) Ma hai una citazione?
giorno

Quindi una chiave composta sarebbe la chiave che si trova di solito in una tabella di giunzione utilizzata ad esempio per molte relazioni?
Josh P

19

Non sono ancora sicuro del perché http://en.wikipedia.org/wiki/Compound_key non sia stato consultato. Dichiara molto chiaramente (ed è corretto):

Nella progettazione del database, una chiave composta è una chiave composta da 2 o più attributi che identificano in modo univoco un'occorrenza di entità. Ogni attributo che costituisce la chiave composta è una chiave semplice a sé stante.

Questo è spesso confuso con una chiave composita per cui anche se questa è anche una chiave che consiste di 2 o più attributi che identificano in modo univoco un'occorrenza di entità, almeno un attributo che costituisce la chiave composita non è una chiave a sé stante.

Una chiave composita è costituita da elementi che possono essere o meno chiavi esterne. Esempio: in una tabella dei dettagli della transazione, la chiave è (TransactionId, ItemNumber). Un dettaglio della transazione è una sottoentità di una transazione. TransactionId è una chiave esterna, che fa riferimento alla tabella Transazioni. ItemNumber non è una chiave in sé e per sé. Identifica in modo univoco un articolo nel contesto di una singola transazione.

Una chiave composta è una chiave per cui qualsiasi parte della chiave è una chiave esterna. Esempio: in un sistema di prenotazione di un hotel, una prenotazione ha la chiave composta, (GuestId, HotelId, ArrivalDate). GuestId identifica un Guest e fa riferimento alla tabella Guest. HotelId identifica un hotel e fa riferimento alla tabella degli hotel. ArrivalDate identifica una data. Potrebbe esserci o meno una tabella Date a cui fa riferimento, ma identifica un'entità (una data) in entrambi i modi.

Da notare anche questo factoide: una chiave semplice è una chiave composta da una colonna, mentre una chiave composita è composta da due o più colonne.


4
jcolebrand: "Una chiave composta è una chiave per cui qualsiasi parte della chiave potrebbe identificare il record." Non è corretto Per definizione, una chiave deve essere irriducibile (un superkey minimo). Se per identificare in modo univoco una tupla sono necessari solo alcuni degli attributi, per definizione si tratta di una superkey e non di una chiave.
nvogel,

a) Stavo citando la pagina di Wikipedia. b) tendo ad essere d'accordo con esso. Qualsiasi parte di una chiave composta è essa stessa una chiave semplice. Non mi importa se lo chiami anche un superkey. Tuttavia, non credo che tutte le chiavi composte possano essere superkey. Ergo, sostengo ciò che è nell'articolo di Wikipedia e sostengo la definizione che ho citato. Posso andare a prendere il mio libro di progettazione di database con copertina rigida pubblicato se ciò ti renderebbe più felice.
jcolebrand

2
Penso che tu abbia perso il punto rilevante, che è che una chiave composta è composta da chiavi di altre entità . Un sottoinsieme corretto di una chiave non può essere una chiave. Come sono sicuro che sai, una chiave deve essere minima (all'interno della tabella di cui è una chiave) - quindi se rimuovi qualsiasi attributo da essa non sarebbe più una chiave.
nvogel,

2
"Chiave" è solo l'abbreviazione di "chiave candidata". La definizione da manuale di una chiave candidata è ed è sempre stata una "superkey minima". Riferimenti: Date's Dictionary pg17 o The Alice Book in caso di dubbi sulla definizione di una chiave.
nvogel,

1
Le definizioni di " chiave composta " e " chiave compsite " nella pagina di Wikipedia sono state modificate il 13 luglio 2014 e non corrispondono più alle definizioni in questa risposta. (Non ho modificato le definizioni, sottolineando solo che le definizioni non corrispondono ora.)
spencer7593

3

In inglese si tratta di "chiavi composte". Ad esempio, dai un'occhiata al sito Web MSDN (qualsiasi ricerca contenente "chiave composita sql" lo farà).

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

Supponendo che la domanda riguardi i database relazionali, ho cercato una definizione "neutrale" in Wikipedia :

Una chiave composita è una chiave composta da due o più attributi all'interno di una tabella che (insieme) identificano in modo univoco un record


1
Nessuna fonte, nessun riferimento, nessun collegamento, niente di niente ... risposta negativa.


google.com/search?q=sql+composite+key+definition ti porterà in un milione di siti che parlano di chiavi composite SQL
Hemme,

1
così sarà una ricerca di Google per chiave composta
jcolebrand

3
Questo è scientifico: googlefight.com/…
Hemme,

3

Una chiave composita è composta da più di un attributo per identificare in modo univoco un'occorrenza di entità. Ciò differisce da una chiave composta in quanto uno o più attributi, che costituiscono la chiave, non sono semplici chiavi a sé stanti.

Ad esempio, hai un database che contiene la tua collezione di CD. Una delle entità si chiama tracce, che contiene i dettagli delle tracce su un CD. Questo ha una chiave composita di nome CD, numero traccia.


2

Mi sembra che una chiave composita sia un superset che include chiavi composte. Se accettiamo che una chiave composita è composta da più di un attributo (di qualsiasi tipo) e una chiave composta è composta da più di una chiave semplice. Una chiave composta è un tipo di chiave composita con un significato più specifico, ma il termine chiave "composita" è sempre appropriato da usare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.