Comme vous le savez peut-être déjà, les bases de données utilisent des tables pour organiser les informations. (Si vous ne connaissez pas les concepts de base de données, lisez la rubrique Qu'est-ce qu'une base de données?) Chaque table est composée d'un certain nombre de lignes, chacune correspondant à un seul enregistrement de base de données. Alors, comment les bases de données conservent-elles tous ces enregistrements? C'est grâce à l'utilisation de clés.
Clés primaires
Le premier type de clé dont nous allons parler est la clé primaire. Chaque table de base de données doit avoir une ou plusieurs colonnes désignées comme clé primaire. La valeur que cette clé détient doit être unique pour chaque enregistrement de la base de données.
Par exemple, supposons que nous ayons une table appelée Employees qui contient des informations sur le personnel pour chaque employé de notre entreprise. Nous n'aurions pas besoin de sélectionner une clé primaire appropriée identifiant de manière unique chaque employé. Votre première pensée pourrait être d’utiliser le nom de l’employé. Cela ne fonctionnerait pas très bien, car il est concevable d’embaucher deux employés du même nom. Un meilleur choix pourrait être d'utiliser un numéro d'identification d'employé unique que vous attribuez à chaque employé lors de son embauche. Certaines entreprises choisissent d’utiliser les numéros de sécurité sociale (ou des identifiants gouvernementaux similaires) pour cette tâche, car chaque employé en possède déjà un et il est garanti qu’il est unique. Cependant, l'utilisation des numéros de sécurité sociale à cette fin est très controversée en raison de problèmes de confidentialité. (Si vous travaillez pour un organisme gouvernemental, l'utilisation d'un numéro de sécurité sociale peut même être illégale en vertu de la loi sur la protection de la vie privée de 1974.) Pour cette raison, la plupart des organisations ont opté pour des identificateurs uniques (numéro d'employé, numéro d'étudiant, etc.). .) qui ne partagent pas ces problèmes de confidentialité.
Une fois que vous avez choisi une clé primaire et configuré la base de données, le système de gestion de la base de données appliquera le caractère unique de la clé. Si vous essayez d'insérer un enregistrement dans une table avec une clé primaire qui duplique un enregistrement existant, l'insertion échouera.
La plupart des bases de données sont également capables de générer leurs propres clés primaires. Microsoft Access, par exemple, peut être configuré pour utiliser le type de données NuméroAuto afin d'attribuer un ID unique à chaque enregistrement de la table. Bien qu'efficace, il s'agit d'une mauvaise pratique de conception, car il vous laisse une valeur insignifiante dans chaque enregistrement de la table. Pourquoi ne pas utiliser cet espace pour stocker quelque chose d'utile?
Clés étrangères
L'autre type est la clé étrangère, utilisée pour créer des relations entre les tables. Des relations naturelles existent entre les tables dans la plupart des structures de base de données. En revenant à notre base de données des employés, imaginons que nous voulions ajouter un tableau contenant des informations ministérielles à la base de données. Cette nouvelle table pourrait s'appeler des départements et contiendrait une grande quantité d'informations sur le département dans son ensemble. Nous souhaiterions également inclure des informations sur les employés du département, mais il serait redondant d’avoir les mêmes informations dans deux tableaux (Employés et Départements). Au lieu de cela, nous pouvons créer une relation entre les deux tables.
Supposons que la table Departments utilise la colonne Department Name comme clé primaire. Pour créer une relation entre les deux tables, nous ajoutons une nouvelle colonne à la table Employees appelée Department. Nous indiquons ensuite le nom du département auquel chaque employé appartient. Nous informons également le système de gestion de base de données que la colonne Département de la table Employees est une clé étrangère qui fait référence à la table Departments. La base de données appliquera ensuite l'intégrité référentielle en s'assurant que toutes les valeurs de la colonne Departments de la table Employees ont les entrées correspondantes dans la table Departments.
Notez qu'il n'y a pas de contrainte d'unicité pour une clé étrangère. Nous pouvons (et avons probablement) plus d'un employé appartenant à un seul ministère. De même, il n’est pas nécessaire qu’une entrée de la table Departments ait une entrée correspondante dans la table Employees. Il est possible que nous ayons un département sans employés.
Pour plus d'informations sur ce sujet, consultez Création de clés étrangères.