Quelle est la différence entre la clé primaire et la super clé dans le SGBD

20

Je suis nouveau dans les SGBD et j'apprends toujours la théorie.

Je suis vraiment confus avec cette activité clé et après avoir googlé, je l'ai réduit à seulement 2 clés que je n'obtiens pas (clé principale et super clé).

J'ai quelques questions sur le SGBD. Je vous serais reconnaissant de bien vouloir me répondre pour moi.

1) Quelle est la différence entre la clé primaire et la super clé dans le SGBD? Je l'apprécie beaucoup si vous pouvez utiliser un exemple complet pour expliquer correctement

2) La clé primaire et la clé super peuvent- elles avoir plusieurs colonnes combinées pour former la clé primaire et la clé super?

3) La clé primaire est-elle un sous-ensemble de la clé Super ou vice versa?

MikeHil
la source
1
Une chose qui est passée sous silence est que le tuple (ligne) lui-même est une super-clé. Étant donné que l'intention est de pouvoir identifier de manière unique la ligne, c'est-à-dire de pouvoir identifier de manière unique le tuple contenant une combinaison particulière de valeurs, une façon de le faire est d'avoir déjà toutes les valeurs disponibles. Par conséquent, le tuple est une super-clé pour lui-même, car une fois que nous connaissons les valeurs dans le tuple, nous savons clairement comment trouver le tuple ayant ces valeurs. Cela semble idiot au début, mais il établit une limite supérieure sur ce qui peut être une super-clé pour un tuple - le tuple lui-même.
Dave
@Dave L'ensemble de tous les noms de colonnes d'une relation / table (et donc chacun de ses tuples / lignes) en est une super-clé. Pas "le tuple (ligne) lui-même".
philipxy
@philipxy vous avez raison et je me suis trompé - je me tiens corrigé. Merci d'avoir ajouté la clarification.
Dave

Réponses:

23

Une Super Clé est simplement une Clé Candidate non minimale , c'est-à-dire une avec des colonnes supplémentaires non strictement requises pour assurer l'unicité de la ligne.

Une clé primaire est une clé candidate minimale , c'est-à-dire que toutes les colonnes constitutives sont strictement nécessaires pour garantir l'unicité.

En tant que développeur / concepteur de bases de données de 30 ans d'expérience, je n'avais jamais entendu le terme Super Key jusqu'à ce que je vois cette question et que je la recherche. Le concept de Super Key semble plus pertinent pour le sujet de la conception des performances et du schéma physique car il correspond directement au concept d'un index non cluster unique avec des colonnes supplémentaires pour une meilleure couverture des requêtes.

Pieter Geerkens
la source
3
C'est tout à fait inexact. Vous utilisez superkey, CK & PK à la place de superkey, superkey et CK appropriés. Une super-clé est un ensemble UNIQUE. (Un CK est une super-clé "minimale". Il n'y a pas de notion de "CK minimal". Chaque CK est une super-clé. Ainsi, une super-clé n'a pas besoin d'avoir plus de colonnes qu'un CK. Un PK est un CK, on ​​appelle le PK. S'il devait s'agir d'un "CK minimal", alors "minimal" devrait signifier "arbitraire".) SQL PK & UNIQUE NOT NULL déclarent des super-clés. (Un PK SQL peut ou non être un PK.) Les super-clés sont essentielles à la définition de CK, qui est essentielle à la conception, y compris la normalisation. Voir ma réponse.
philipxy
1
De plus, la compréhension de SK est nécessaire pour utiliser le Boyce-Codd NF
Tanckom
16

Super Keys: Super key représente le sur-ensemble d'une clé. Une super clé est un ensemble d'un ou plusieurs attributs qui sont pris collectivement et peuvent identifier tous les autres attributs de manière unique.

Par exemple, nous avons une table

Book (BookId, BookName, Author)

Donc, dans ce tableau, nous pouvons avoir

   (BookId)
   (BookId,BookName)
   (BookId, BookName, Author)
   (BookId, Author)
   (BookName, Author)

Comme notre super clé. Chaque super clé est capable d'identifier de façon unique chaque tuple (enregistrement).

Clés candidates Les clés candidates sont une super clé qui n'a pas d'attributs redondants. En d'autres termes, les clés candidates sont des super clés minimales. Par exemple, dans l'illustration ci-dessus

   (BookId)
   (BookName,Author)

Ces deux clés peuvent être des clés candidates, car les clés restantes ont des attributs redondants. Les moyens dans l'enregistrement de super clé (BookId, BookName) peuvent être identifiés de manière unique par juste bookid et donc Bookname est un attribut redondant

Clé primaire: il s'agit d'une clé candidate choisie par le concepteur de base de données pour identifier les entités dans un ensemble d'entités. OU Une clé utilisée pour identifier de manière unique chaque enregistrement est appelée clé primaire.

À partir des clés candidates ci-dessus, n'importe laquelle peut être la clé primaire. Et l'autre qui n'est pas choisi comme clé primaire sera connu comme clé alternative

Payal Trivedi
la source
Cela répond à la question et mérite un vote positif.
srk
Notez également qu'un autre nom pour alternative keyest secondary keyle même. Très bonne réponse!
Wael Alshabani
2

De ma réponse stackoverflow.com :

Une clé candidate est un ensemble de colonnes qui identifie de manière unique les lignes et qui ne contient aucun sous-ensemble plus petit ("approprié") de colonnes qui identifie de manière unique les lignes.

Une super-clé est un ensemble de colonnes qui identifie de manière unique les lignes. Une clé candidate est donc une super-clé qui ne contient pas de super-clé plus petite.

En SQL, vous ne pouvez pas déclarer une clé candidate vide. De plus, UNIQUE NOT NULL et PRIMARY KEY (qui en termes de contraintes signifie simplement UNIQUE NOT NULL) déclarent des super-clés, pas des clés en soi. Si l'ensemble de colonnes d'une telle déclaration ne contient pas un ensemble de colonnes plus petit déclaré en tant que super-clé, la super-clé qu'il déclare est une clé candidate.

À partir de cette réponse de stackoverflow.com concernant un tableau donné:

Pour les ensembles de colonnes X et Y , on peut écrire X -> Y . Nous disons que X est l' ensemble déterminant et Y est l' ensemble déterminé de / en dépendance fonctionnelle ( FD ) X -> Y.

Nous disons que X détermine fonctionnellement Y et Y est fonctionnellement déterminé par X. Nous disons que X est le déterminant de X -> Y. Dans {C} -> Y, nous disons que C détermine fonctionnellement Y. Dans X -> {C}, nous disons X détermine fonctionnellement C. Lorsque X est un surensemble de Y, nous disons que X -> Y est trivial .

Nous disons que X -> Y est présent dans le tableau T lorsque chaque sous-rangée de valeurs pour X apparaît toujours / uniquement avec la même sous-rangée de valeurs pour Y. Ou nous disons que X -> Y est un FD de / dans T. Lorsque X est un déterminant de certains FD dans le tableau T, nous disons que X est un déterminant de / dans T.

Une super - clé d'une table T est un ensemble de colonnes qui détermine fonctionnellement chaque attribut. Une clé candidate ( CK ) est une super-clé qui ne contient aucune super-clé plus petite. Nous pouvons choisir un CK comme clé primaire ( PK ) puis appeler les autres clés alternatives des CK . Une colonne est première lorsqu'elle se trouve dans un CK.

(Comme je l'ai commenté là-bas, "Les quatre phrases en gras pour FD, cales, super-clés et CK auraient suffi.")

(Une table avec un CK vide est contrainte de contenir au plus une ligne. Un ensemble de colonnes déterminé par l'ensemble vide est contraint d'avoir la même valeur de sous-ligne dans chaque ligne.)

philipxy
la source
1

Clé Une clé est un champ unique ou une combinaison de plusieurs champs. Son objectif est d'accéder ou de récupérer des lignes de données de la table en fonction des besoins. Les clés sont définies dans des tableaux pour accéder ou séquencer les données stockées rapidement et en douceur. Ils sont également utilisés pour créer des liens entre différentes tables.

Types de clés Les tableaux ou relations suivants seront utilisés pour définir différents types de clés.

Clé primaire L'attribut ou la combinaison d'attributs qui identifie de façon unique une ligne ou un enregistrement dans une relation est appelé clé primaire.

Clé secondaire Un champ ou une combinaison de champs qui sert de base à la récupération est appelé clé secondaire. La clé secondaire est un champ non unique. Une valeur de clé secondaire peut faire référence à de nombreux enregistrements.

Clé candidate ou clé alternative Une relation ne peut avoir qu'une seule clé primaire. Il peut contenir de nombreux champs ou une combinaison de champs pouvant être utilisés comme clé primaire. Un champ ou une combinaison de champs est utilisé comme clé primaire. Les champs ou la combinaison de champs qui ne sont pas utilisés comme clé primaire sont appelés clé candidate ou clé alternative.

Clé composite ou clé de concaténation Une clé primaire composée de deux attributs ou plus est appelée clé composite.

Clé de tri ou de contrôle Champ ou combinaison de champs utilisé pour séquencer physiquement les données stockées appelées clé de tri. Il est également connu sous le nom de clé de contrôle.

Une super - clé est une combinaison d'attributs qui peuvent être utilisés de manière unique pour identifier un enregistrement de base de données. Une table peut avoir plusieurs super-clés. Les clés candidates sont un sous-ensemble spécial de super-clés qui ne contiennent aucune information étrangère.

Exemple de super clé: imaginez une table avec les champs Nom, Âge, SSN et <Poste téléphonique>. Ce tableau contient de nombreuses super-clés possibles. Trois d'entre eux sont SSN, poste téléphonique et nom. Parmi ceux répertoriés, seul SSN est une clé candidate, car les autres contiennent des informations qui ne sont pas nécessaires pour identifier de manière unique les enregistrements.

Clé étrangère Une clé étrangère est un attribut ou une combinaison d'attributs dans une relation dont la valeur correspond à une clé primaire dans une autre relation. La table dans laquelle la clé étrangère est créée est appelée table dépendante. La table à laquelle la clé étrangère fait référence est appelée table parent.

pour clé minimale de Super référer ce lien , il est plus clair , il http://www.answers.com/topic/superkey-1

Ved Prakash
la source