Clé primaire - Primary key

Dans le modèle relationnel des bases de données , une clé primaire est un choix spécifique d'un ensemble minimal d'attributs ( colonnes ) qui spécifient de manière unique un tuple ( ligne ) dans une relation ( table ). De manière informelle, une clé primaire est « quels attributs identifient un enregistrement » et, dans des cas simples, constitue un attribut unique : un identifiant unique. Plus formellement, une clé primaire est un choix de clé candidate (une superclé minimale ) ; toute autre clé candidate est une clé alternative .

Une clé primaire peut être constituée d'observables du monde réel, auquel cas elle est appelée clé naturelle , tandis qu'un attribut créé pour fonctionner comme clé et non utilisé pour l'identification en dehors de la base de données est appelé clé de substitution . Par exemple, pour une base de données de personnes (d'une nationalité donnée), l'heure et le lieu de naissance pourraient être une clé naturelle. Le numéro d'identification national est un autre exemple d'attribut qui peut être utilisé comme clé naturelle.

Histoire

Bien que principalement utilisé aujourd'hui dans le contexte des bases de données relationnelles, le terme "clé primaire" est antérieur au modèle relationnel et est également utilisé dans d'autres modèles de bases de données. Charles Bachman, dans sa définition de la base de données de navigation, est la première personne à définir les clés primaires.

Concevoir

En termes de base de données relationnelle, une clé primaire ne diffère pas par sa forme ou sa fonction d'une clé qui n'est pas primaire. En pratique, diverses motivations peuvent déterminer le choix d'une clé comme primaire plutôt qu'une autre. La désignation d'une clé primaire peut indiquer l'identifiant "préféré" pour les données de la table, ou que la clé primaire doit être utilisée pour les références de clé étrangère d'autres tables ou elle peut indiquer une autre caractéristique technique plutôt que sémantique de la table. Certains langages et logiciels ont des fonctionnalités de syntaxe spéciales qui peuvent être utilisées pour identifier une clé primaire en tant que telle (par exemple la contrainte PRIMARY KEY en SQL).

Le modèle relationnel, tel qu'exprimé par le calcul relationnel et l'algèbre relationnelle, ne fait pas de distinction entre les clés primaires et les autres types de clés. Les clés primaires ont été ajoutées à la norme SQL principalement pour la commodité du programmeur d'applications.

Définir les clés primaires en SQL

Les clés primaires sont définies dans la norme ISO SQL , via la contrainte PRIMARY KEY. La syntaxe pour ajouter une telle contrainte à une table existante est définie dans SQL:2003 comme ceci :

ALTER TABLE <table identifier> 
    ADD [ CONSTRAINT <constraint identifier> ] 
    PRIMARY KEY ( <column name> [ {, <column name> }... ] )

La clé primaire peut également être spécifiée directement lors de la création de la table. Dans la norme SQL, les clés primaires peuvent être constituées d'une ou plusieurs colonnes. Chaque colonne participant à la clé primaire est implicitement définie comme NOT NULL. Notez que certains SGBDR nécessitent de marquer explicitement les colonnes de clé primaire comme NOT NULL.

CREATE TABLE table_name (
   
   ...
)

Si la clé primaire n'est constituée que d'une seule colonne, la colonne peut être marquée comme telle à l'aide de la syntaxe suivante :

CREATE TABLE table_name (
   id_col  INT  PRIMARY KEY,
   col2    CHARACTER VARYING(20),
   ...
)

Clés de substitution

Dans certaines circonstances, la clé naturelle qui identifie de manière unique un tuple dans une relation peut être difficile à utiliser pour le développement de logiciels. Par exemple, cela peut impliquer plusieurs colonnes ou de grands champs de texte. Dans de tels cas, une clé de substitution peut être utilisée à la place comme clé primaire. Dans d'autres situations, il peut y avoir plus d'une clé candidate pour une relation, et aucune clé candidate n'est évidemment préférée. Une clé de substitution peut être utilisée comme clé primaire pour éviter de donner à une clé candidate une primauté artificielle sur les autres.

Étant donné que les clés primaires existent principalement pour la commodité du programmeur, les clés primaires de substitution sont souvent utilisées, dans de nombreux cas exclusivement, dans la conception d'applications de base de données.

En raison de la popularité des clés primaires de substitution, de nombreux développeurs et, dans certains cas, même des théoriciens en sont venus à considérer les clés primaires de substitution comme une partie inaliénable du modèle de données relationnelles. Ceci est largement dû à une migration des principes du modèle de programmation orienté objet vers le modèle relationnel, créant le modèle hybride objet-relationnel. Dans l' ORM comme le modèle d'enregistrement actif , ces restrictions supplémentaires sont placées sur les clés primaires :

  • Les clés primaires doivent être immuables, c'est-à-dire jamais modifiées ou réutilisées ; ils doivent être supprimés avec l'enregistrement associé.
  • Les clés primaires doivent être des identificateurs entiers ou numériques anonymes.

Cependant, aucune de ces restrictions ne fait partie du modèle relationnel ni d'aucune norme SQL. Une diligence raisonnable doit être appliquée au moment de décider de l'immuabilité des valeurs de clé primaire lors de la conception de la base de données et de l'application. Certains systèmes de base de données impliquent même que les valeurs des colonnes de clé primaire ne peuvent pas être modifiées à l'aide de l' UPDATEinstruction SQL.

Clé alternative

Typiquement, une clé candidate est choisie comme clé primaire. D'autres clés candidates deviennent des clés alternatives, chacune pouvant avoir une UNIQUEcontrainte qui lui est assignée afin d'éviter les doublons (une entrée en double n'est pas valide dans une colonne unique).

Les clés alternatives peuvent être utilisées comme la clé primaire lors d'une sélection de table unique ou lors du filtrage dans une clause where , mais ne sont généralement pas utilisées pour joindre plusieurs tables.

Voir également

Remarques

Les références