Que signifie cette définition d'une clé primaire?

8

Mon manuel donne la définition suivante d'une clé primaire dans une base de données relationnelle, que je ne comprends pas entièrement. De l'aide serait grandement appréciée.

Laisser Rêtre une relation. Ensuite, la clé primaire pourR est un sous-ensemble de l'ensemble des attributs de R, dire K, satisfaisant les deux propriétés suivantes:

  1. Propriété d'unicité: pas deux tuples distincts de R ont la même valeur pour K.

  2. Propriété d'irréductibilité: aucun sous-ensemble approprié de K a la propriété d'unicité.

Je me perds par la propriété Irreducibility.

FutureSci
la source
Attention: 1) plusieurs sous-ensembles de colonnes peuvent satisfaire ces propriétés, donc finalement, la clé primaire est ce que la personne définissant les clés primaires choisit; 2) dans la pratique, les SGBD qui prennent en charge les clés primaires appliquent la propriété 1, mais pas la propriété 2 (même si je n'ai pas vérifié cela pour beaucoup).
reinierpost
2
Remarque: si le livre dit " la clé primaire", alors il est trompeur. Il est possible et non rare pour plusieurs ensembles différents de colonnes existantes qui pourraient être considérées comme PK.
AnoE

Réponses:

7

Considérez le tableau suivant:

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

Une clé est tout ensemble d'attributs: tout sous-ensemble de {FirstName, LastName, Pet, FavColour}. La propriété d'unicité indique qu'aucun enregistrement ne peut avoir les mêmes valeurs pour les attributs d'une clé. Ainsi, par exemple, {FavColour} est une clé qui a la propriété d'unicité: deux enregistrements n'ont pas la même valeur pour elle. {Prénom, Nom} est également unique: il n'y a pas deux enregistrements ayant le même prénom et le même nom. {Pet}, d'autre part, n'est pas unique, car les premier et deuxième enregistrements ont la même valeur pour cet attribut.

Désormais, {FirstName, LastName, Pet, FavColour} est également une clé unique: aucun enregistrement n'a la même valeur pour tous les attributs. Mais c'est une sorte de clé idiote, non? L'irréductibilité indique que si vous supprimez l'un des attributs de votre clé, il cesse d'être unique. Donc {Firstname, LastName, Pet, FavColour} n'est pas irréductible car, si vous supprimez FavColour, vous obtenez la clé {FirstName, LastName, Pet}, qui a toujours un caractère unique. Et ce n'est pas irréductible car vous pouvez jeter Pet et obtenir {FirstName, LastName}, qui est toujours unique. Cependant, {FirstName, LastName} est irréductible car ni {FirstName} ni {LastName} n'est unique: il y a deux personnes avec le même prénom et deux personnes avec le même nom.

David Richerby
la source
tl; dr: le plus petit ensemble de colonnes pouvant identifier de façon unique un enregistrement
DForck42
1
@ DForck42 Non, un plus petit ensemble de colonnes qui peut identifier de manière unique chaque enregistrement.
David Richerby
La question est formulée en termes de bases de données, ce que je comprendrais comme un schéma, pas une seule instance de relation. Les clés d'un schéma de relation ne peuvent pas être déterminées en examinant des exemples de données. Des exemples de données peuvent nous indiquer des ensembles d'attributs qui ne sont PAS des clés (par exemple, {Pet} n'est pas une clé dans ce cas), mais les dépendances fonctionnelles sont la seule base solide pour déterminer les clés réelles.
nvogel
14

Notez comment Kpeut être un ensemble de colonnes. L'irréductibilité signifie que vous devez choisir un nombre minimal d' ensembles de colonnes.

Nota bene: Ils devraient exigerK.

Par exemple, considérez cette relation.

A   B   C

1   4   4
2   4   6
3   6   6

Examinons toutes les clés possibles.

  1. A - unique et irréductible.
  2. B -- Pas unique.
  3. C -- Pas unique.
  4. A,B- réductible à A.
  5. A,C- réductible à A.
  6. B,C - unique et irréductible.
  7. A,B,C- réductible à A.

Par conséquent, il y a deux choix pour les clés primaires ici: Aet B,C.

Raphael
la source
5
Re: "Ils devraient exiger K": Cela ne me semble pas nécessaire. Si la relation est vide ou contient un seul tuple, alors est sans doute la clé primaire; et si la relation contient plus d'un tuple, alorsne satisfait pas la propriété d'unicité.
ruakh
@ruakh Point pris.
Raphael
1

L'irréductibilité se réfère simplement à un ensemble minimum d'attributs que nous ne pouvons pas descendre ci-dessous sans perdre l'unicité. Par exemple, dans un tableau de personnes, nous pouvons trouver que (Nom, Prénom) sont uniques alors que (Nom) et (Prénom) ne le sont pas.

Une fois que nous avons unicité, nous pouvons continuer à ajouter des attributs sans le perdre, donc l'irréductibilité résout ce problème.

KWillets
la source