web-dev-qa-db-fra.com

Quelle est la différence entre une clé candidate et une clé primaire?

Est-ce qu'une clé primaire est la clé candidate sélectionnée pour une table donnée?

45
Celeritas

Candidate Key - Une clé candidate peut être toute colonne ou combinaison de colonnes pouvant qualifier de clé unique dans la base de données. Il peut y avoir plusieurs clés de candidats dans une même table. Chaque clé candidate peut être qualifiée de clé primaire.

Primary Key - Une clé primaire est une colonne ou une combinaison de colonnes qui identifie de manière unique un enregistrement. Une seule clé candidate peut être une clé primaire.

Plus sur ce lien avec exemple

81
John Woo

La réponse de John Woo est correcte, dans la mesure du possible. Voici quelques points supplémentaires.

Une clé primaire est toujours l'une des clés candidates. Assez souvent, c'est le seul candidat.

Une table sans clé candidate ne représente pas une relation. Si vous utilisez le modèle relationnel pour vous aider à construire une bonne base de données, chaque table que vous concevez aura au moins une clé candidate.

Le modèle relationnel serait complet sans le concept de clé primaire. Ce n'était pas dans la présentation originale du modèle relationnel. En pratique, l'utilisation de références de clé étrangère sans clé primaire déclarée entraîne un désordre. Ce pourrait être un gâchis logiquement correct, mais c'est quand même un gâchis. La déclaration d'une clé primaire permet au SGBD de vous aider à appliquer les règles de données. La plupart du temps, le SGBD vous aide à appliquer les règles de données, ce qui est une bonne chose et en vaut la peine.

Certains concepteurs de base de données et certains utilisateurs ont une confusion mentale quant à savoir si la clé primaire identifie une ligne (enregistrement) dans une table ou une instance d'une entité dans l'objet que représente la table. Dans un monde idéal, il est supposé faire les deux, et il devrait exister une correspondance un pour un entre les lignes d'une table d'entités et les instances de l'entité correspondante. 

Dans le monde réel, les choses se gâtent. Quelqu'un entre le même nouvel employé deux fois, et l'employé se retrouve avec deux identifiants. Quelqu'un se fait embaucher, mais la saisie des données passe au travers d'un processus manuel et l'employé ne reçoit pas d'identifiant, jusqu'à ce que l'omission soit corrigée. Une base de données qui ne s'effondre pas la première fois que des choses se gâtent est plus robuste qu'une autre. 

20
Walter Mitty

Clé primaire -> Toute colonne ou ensemble de colonnes pouvant identifier de manière unique un enregistrement dans la table est une clé primaire. (Il peut y avoir une seule clé primaire dans le tableau)

Clé candidate -> Toute colonne ou ensemble de colonnes qui sont candidat pour devenir clé primaire sont des clés candidates. (Il peut y avoir une ou plusieurs clé (s) candidate) dans la table, s'il n'y a qu'une seule clé candidate, elle peut être choisie comme clé primaire.

10
Habib

Il n'y a pas de différence. Une clé primaire est une clé candidate. Par convention, une clé candidate dans une relation est généralement choisie comme clé "principale", mais le choix est essentiellement arbitraire et pratique pour les utilisateurs/concepteurs/développeurs de bases de données. Cela ne différencie pas fondamentalement une clé "primaire" d'une autre clé candidate.

9
nvogel

Une clé primaire est un type d'index spécial en ce sens que:

there can be only one;
it cannot be nullable
it must be unique.

Les clés candidates sont sélectionnées dans le groupe de super clés. La seule chose à laquelle nous tenons compte lors de la sélection de la clé candidate est la suivante: elle ne doit pas avoir d'attribut redondant. 

Exemple de table d'employés: Employee ( Employee ID, FullName, SSN, DeptID )

  1. Clé candidate: sont des colonnes individuelles dans une table qui permet de qualifier l'unicité de toutes les lignes. Ici, dans la table des employés, EmployeeID et SSN sont des clés de candidat.

  2. Clé primaire: correspond aux colonnes que vous choisissez de conserver l'unicité dans une table. Ici, dans la table Employee, vous pouvez choisir des colonnes EmployeeID ou SSN. EmployeeID est un choix préférable, car SSN est une valeur sécurisée.

  3. Clé alternative: colonne Candidate autre que la colonne Primaire, comme si EmployeeID est PK, alors SSN serait la clé Alternate.

  4. Super clé: Si vous ajoutez une autre colonne/un autre attribut à une clé primaire, celle-ci devient une super clé, comme EmployeeID + FullName est une super clé.

  5. Clé composite: si une table ne contient pas une seule colonne qualifiée pour une clé candidate, vous devez sélectionner 2 colonnes ou plus pour rendre une ligne unique. Comme s'il n'y a pas de colonne EmployeeID ou SSN, vous pouvez définir FullName + DateOfBirth en tant que clé primaire composite. Mais il peut toujours y avoir une chance étroite de dupliquer la ligne.

5
Renuka Kulkarni

Une table peut avoir autant de colonnes qui peuvent identifier une ligne de manière unique. Ces colonnes sont appelées clés candidates, mais clé primaire doit être l'une d'elles car une clé primaire suffit pour une table. La sélection de clé primaire est donc importante parmi tant clé candidate. Thats la principale différence. 

2
Mudassir

Clé primaire

La clé primaire d'une table est une colonne (ou une combinaison de colonnes) utilisée comme identification unique des lignes de cette table. En d'autres termes, deux lignes différentes d'une table peuvent ne jamais avoir la même valeur dans leur clé primaire, et pour chaque ligne de la table, la clé primaire doit toujours avoir une valeur. Cette dernière signifie que les valeurs null ne sont pas autorisées dans une clé primaire. clé.

Nous rencontrons des clés primaires partout. Par exemple, la table dans laquelle une banque stocke des données sur des comptes bancaires a la colonne numéro de compte bancaire en tant que clé primaire. De même, une table dans laquelle différentes voitures sont immatriculées utilise la plaque d'immatriculation comme clé primaire.

 enter image description here


Clé du candidat

Certaines tables contiennent plus d'une colonne (ou combinaison de colonnes) pouvant servir de clé primaire. Ces colonnes possèdent toutes la propriété d'unicité d'une clé primaire. Ici aussi, les valeurs NULL ne sont pas autorisées. Ces colonnes sont appelées clés candidates. Cependant, un seul est désigné comme clé primaire. Par conséquent, une table a toujours au moins une clé candidate. 

Si nous supposons que les numéros de passeport sont également inclus dans la table des joueurs d'un club, cette colonne sera utilisée comme clé du candidat car les numéros de passeport sont uniques. Deux joueurs ne peuvent jamais avoir le même numéro de passeport. Cette colonne pourrait également être désignée comme clé primaire.


Clé alternative

Une clé candidate qui n'est pas la clé primaire d'une table s'appelle une clé alternative. Zéro ou plusieurs clés alternatives peuvent être définies pour une table spécifique. Le terme clé candidate est un terme général pour toutes les clés primaires et alternatives.


Clé étrangère

Une clé étrangère est une colonne (ou une combinaison de colonnes) d'une table dans laquelle la population est un sous-ensemble de la population de la clé primaire d'une table (il n'est pas nécessaire que soit une autre table). Les clés étrangères sont parfois appelées clés référentielles.

1
gadolf

Pensez à une table de véhicules avec une clé primaire entière. 

Le numéro d'enregistrement serait une clé candidate.

Dans le monde réel, les numéros d'enregistrement sont sujets à changement, cela dépend donc un peu des circonstances qui peuvent être qualifiées de clé candidate.

1
Hugh Jones

Une clé primaire est une colonne (ou des colonnes) dans une table qui identifie de manière unique les lignes de cette table.

CUSTOMERS


CustomerNo  FirstName   LastName
1   Sally   Thompson
2   Sally   Henderson
3   Harry   Henderson
4   Sandra  Wellington

Par exemple, dans le tableau ci-dessus, CustomerNo est la clé primaire.

Les valeurs placées dans les colonnes de clé primaire doivent être uniques pour chaque ligne: aucun doublon ne peut être toléré. De plus, les valeurs NULL ne sont pas autorisées dans les colonnes de clé primaire.

Ainsi, après vous avoir dit qu’il est possible d’utiliser une ou plusieurs colonnes comme clé primaire, comment décidez-vous quelles colonnes (et combien) choisir?

Eh bien, il y a des moments où il est conseillé ou essentiel d’utiliser plusieurs colonnes. Toutefois, si vous ne voyez pas de raison immédiate d'utiliser plusieurs colonnes, utilisez-en une. Ce n'est pas une règle absolue, c'est simplement un conseil. Cependant, les clés primaires composées de colonnes uniques sont généralement plus faciles à gérer et plus rapides à utiliser. Cela signifie que si vous interrogez la base de données, vous obtiendrez généralement la réponse plus rapidement si les tables ont des clés primaires à une colonne.

Question suivante - quelle colonne devriez-vous choisir? Le moyen le plus simple de choisir une colonne en tant que clé primaire (et une méthode raisonnablement utilisée) consiste à demander à la base de données d'attribuer automatiquement un numéro unique à chaque ligne.

Dans une table d'employés, il est clair que toute colonne telle que Prénom est un mauvais choix, car vous ne pouvez pas contrôler les prénoms des employés. Souvent, il n'y a qu'un seul choix pour la clé primaire, comme dans le cas ci-dessus. Toutefois, s’il en existe plusieurs, celles-ci peuvent être qualifiées de «clés candidates» - leur nom indique qu’elles sont candidates au poste de responsable de clé primaire.

0
Abhimanyu Garg

Tout d’abord, vous devez savoir ce qui est un déterminant ? Le déterminant est un attribut utilisé pour déterminer un autre attribut dans la même table . SO le déterminant doit être une clé candidate . Et vous pouvez avoir plus d’un déterminant . Mais clé primaire est utilisé pour déterminer l’enregistrement complet et vous ne pouvez avoir qu’une seule clé primaire . Les clés primaire et candidate peuvent consister en un ou plusieurs attributs.

0
Mario R.Ayoub