web-dev-qa-db-fra.com

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

J'ai beaucoup cherché sur Google, mais je n'ai pas trouvé de réponse simple avec un exemple.

Tout exemple pour cela serait plus utile.

38
Dom

La clé primaire est une clé unique dans votre table que vous choisissez de manière à identifier de manière unique un enregistrement de la table. Toutes les tables doivent avoir une clé primaire, car si vous devez mettre à jour ou supprimer un enregistrement, vous devez savoir comment l'identifier de manière unique.

Une clé de substitution est une clé générée artificiellement. Ils sont utiles lorsque vos enregistrements n’ont pas de clé naturelle (comme une table Person, car il est possible que deux personnes nées à la même date aient le même nom, ou des enregistrements dans un journal, dans la mesure du possible. pour que deux événements se produisent tels qu'ils portent le même horodatage). Le plus souvent, vous les verrez implémentés sous forme d'entiers dans un champ à incrémentation automatique ou sous forme de GUID générés automatiquement pour chaque enregistrement. Les numéros d'identification sont presque toujours des clés de substitution.

Contrairement aux clés primaires, toutes les tables n'ont cependant pas besoin de clés de substitution. Si vous avez un tableau qui répertorie les États américains, vous n'avez pas vraiment besoin d'un numéro d'identification pour eux. Vous pouvez utiliser l'abréviation d'état comme code de clé primaire.

Le principal avantage de la clé de substitution est qu’elles sont faciles à garantir comme uniques. Le principal inconvénient est qu'ils n'ont aucune signification. Par exemple, cela ne signifie pas que "28" est le Wisconsin, mais lorsque vous voyez "WI" dans la colonne État de votre table d’adresses, vous savez de quel état vous parlez sans avoir à rechercher quel est l’état de votre état. table.

62
Bacon Bits

Une clé de substitution est une valeur composée dans le seul but d'identifier de manière unique une ligne. Généralement, ceci est représenté par un identifiant auto-incrémenté.

Exemple de code:

CREATE TABLE Example
(
    SurrogateKey INT IDENTITY(1,1) -- A surrogate key that increments automatically
)

A clé primaire est la colonne ou le groupe de colonnes d'identification d'une table. Peut être une clé de substitution ou toute autre combinaison unique de colonnes (par exemple une clé composée). DOIT être unique pour toute ligne et ne peut pas être NULL.

Exemple de code:

CREATE TABLE Example
(
    PrimaryKey INT PRIMARY KEY -- A primary key is just an unique identifier
)
6
tobypls

Toutes les clés sont des identifiants utilisés comme substituts des éléments qu’elles identifient. E.F.Codd a expliqué le concept de substituts assigné par le système comme suit [1]:

Les utilisateurs de la base de données peuvent provoquer la génération ou la suppression d'un substitut par le système, mais ils n'ont aucun contrôle sur sa valeur et cette valeur ne leur est jamais affichée.

C'est ce que l'on appelle communément une clé de substitution. Cependant, la définition pose immédiatement problème car Codd supposait qu'une telle fonctionnalité serait fournie par le SGBD. Les SGBD en général n’ont pas cette caractéristique. Certains utilisateurs de SGBD, au moins, ont normalement accès aux clés car, pour des raisons évidentes, elles doivent l’être. Le concept de mère porteuse s’est donc légèrement transformé en usage. Le terme est généralement utilisé dans la profession de gestion de données pour désigner une clé qui n'est pas exposée et utilisée comme identifiant dans le domaine des affaires. Notez que ceci est essentiellement indépendant de la manière dont la clé est générée ou de la manière dont elle est "artificielle". Toutes les clés sont constituées de symboles inventés par l'homme ou par des machines. La seule signification possible du terme substitut concerne donc la manière dont la clé est utilisée, pas comment elle est créée ou quelles sont ses valeurs.

[1] Extension du modèle relationnel à la base de données pour donner plus de signification, E.F.Codd, 1979.

3
nvogel

Une clé de substitution est généralement une valeur numérique. Dans SQL Server, Microsoft vous permet de définir une colonne avec une propriété d'identité pour vous aider à générer des valeurs de clé de substitution.

La contrainte PRIMARY KEY identifie de manière unique chaque enregistrement d'une table de base de données. Les clés primaires doivent contenir des valeurs UNIQUES. Une colonne de clé primaire ne peut pas contenir de valeur NULL. La plupart des tables doivent avoir une clé primaire et chaque table ne peut contenir qu’UNE SEULE clé primaire.

http://www.databasejournal.com/features/mssql/article.php/3922066/SQL-Server-Natural-Key-Verses-Surrogate-Key.htm

1
Bishoy Frank

C'est un excellent traitement décrivant les différents types de clés:

http://www.agiledata.org/essays/keys.html

1
n8wrl