Cosa significa questa definizione di chiave primaria?


8

Il mio libro di testo fornisce la seguente definizione di chiave primaria in un database relazionale, che non capisco del tutto. L'aiuto sarebbe molto apprezzato.

Permettere Ressere una relazione. Quindi la chiave primaria perR è un sottoinsieme dell'insieme di attributi di R, diciamo K, soddisfacendo le seguenti due proprietà:

  1. Proprietà di unicità: non esistono due tuple distinte di R hanno lo stesso valore per K.

  2. Proprietà irriducibilità: nessun sottoinsieme corretto di K ha la proprietà di unicità.

Mi sto perdendo la proprietà dell'irriducibilità.


Attenzione: 1) più di un sottoinsieme di colonne può soddisfare tali proprietà, quindi alla fine la chiave primaria è quella che la persona che definisce le chiavi primarie sceglie di essere; 2) in pratica, i DBMS che supportano le chiavi primarie impongono la proprietà 1, ma non la proprietà 2 (anche se non ho verificato questo per molti).
reinierpost,

2
Nota: se il libro dice " la chiave primaria", allora è fuorviante. È possibile e non insolito per più insiemi di colonne differenti esistenti che potrebbero essere considerati come PK.
AnoE

Risposte:


7

Considera la seguente tabella:

FirstName  LastName  Pet  FavColour
-----------------------------------
Alice      Jones     dog  red
Alice      Smith     dog  green
Bob        Smith     cat  blue

Una chiave è qualsiasi insieme di attributi: qualsiasi sottoinsieme di {FirstName, LastName, Pet, FavColour}. La proprietà di unicità afferma che nessun record può avere gli stessi valori per gli attributi in una chiave. Quindi, ad esempio, {FavColour} è una chiave che ha la proprietà di unicità: non esistono due record con lo stesso valore. {Nome, Cognome} è anche univoco: non esistono due record con lo stesso nome e cognome. {Pet}, d'altra parte, non è univoco, poiché il primo e il secondo record hanno lo stesso valore per quell'attributo.

Ora, {FirstName, LastName, Pet, FavColour} è anche una chiave univoca: non esistono due record con lo stesso valore per tutti gli attributi. Ma è una specie di chiave sciocca, giusto? L'irriducibilità dice che, se rimuovi uno qualsiasi degli attributi dalla tua chiave, smette di essere unico. Quindi {Firstname, LastName, Pet, FavColour} non è irriducibile perché, se rimuovi FavColour, ottieni la chiave {FirstName, LastName, Pet}, che ha ancora unicità. E questo non è irriducibile perché puoi buttare via Pet e ottenere {FirstName, LastName}, che è ancora unico. Tuttavia, {FirstName, LastName} è irriducibile perché né {FirstName} né {LastName} sono univoci: ci sono due persone con lo stesso nome e due persone con lo stesso cognome.


tl; dr: la più piccola serie di colonne in grado di identificare in modo univoco un record
DForck42

1
@ DForck42 No, un insieme più piccolo di colonne in grado di identificare in modo univoco ogni record.
David Richerby,

La domanda è formulata in termini di database, che comprenderei per indicare lo schema, non una singola istanza di relazione. Le chiavi di uno schema di relazione non possono essere determinate esaminando i dati di esempio. I dati di esempio possono dirci insiemi di attributi che NON sono chiavi (ad es. {Pet} non è una chiave in questa istanza), ma le dipendenze funzionali sono l'unica base solida per determinare le chiavi effettive.
nvogel,

14

Nota come Kpuò essere un insieme di colonne. Irriducibilità significa che devi scegliere insiemi minimi di colonne.

Nota bene: dovrebbero richiedereK.

Ad esempio, considera questa relazione.

A   B   C

1   4   4
2   4   6
3   6   6

Esaminiamo tutte le possibili chiavi.

  1. A - unico e irriducibile.
  2. B - non unico.
  3. C - non unico.
  4. A,B- riducibile a A.
  5. A,C- riducibile a A.
  6. B,C - unico e irriducibile.
  7. A,B,C- riducibile a A.

Quindi, ci sono due scelte per le chiavi primare qui: Ae B,C.


5
Ri: "Dovrebbero richiedere K": Non mi sembra necessario. Se la relazione è vuota o contiene solo una tupla, allora probabilmente è la chiave primaria; e se la relazione contiene più di una tupla, alloranon soddisfa la proprietà di unicità.
Ruakh,

@ruakh Punto preso.
Raffaello

1

L'irriducibilità si riferisce semplicemente a un insieme minimo di attributi che non possiamo andare sotto senza perdere l'unicità. Ad esempio, in una tabella di persone, possiamo trovare (Cognome, Nome) univoci mentre (Cognome) e (Nome) non lo sono.

Una volta che abbiamo unicità, possiamo continuare ad aggiungere attributi senza perderlo, quindi l'irriducibilità affronta quel problema.

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.