donné que vous êtes humains (comment ça pas du tout ?
), vous risquez de faire une erreur. Avec une clé primaire autoincrémentée, vous ne risquez rien : MySQL fait tout pour vous. De plus, on ne peut définir une colonne comme auto-incrémentée
que si elle est de type INT et qu'il existe un index dessus. Dans le cas d'une clé primaire auto-incrémentée, on définit
généralement la colonne comme un entier UNSIGNED, comme on l'a fait pour la table Animal.
Il peut bien sûr n'y avoir qu'une seule clé primaire par table. De même, une seule colonne peut être auto-incrémentée
(la clé primaire en général).
PRIMARY KEY or not PRIMARY KEY
Je me dois de vous dire que d'un point de vue technique, avoir une clé primaire sur chaque table n'est pas obligatoire. Vous
pourriez travailler toute votre vie sur une base de données sans aucune clé primaire, et ne jamais voir un message d'erreur à ce
propos.
Cependant, d'un point de vue conceptuel, ce serait une grave erreur. Ce n'est pas le propos de ce tutoriel que de vous enseigner
les étapes de conception d'une base de données mais, s'il vous plaît, pensez à mettre une clé primaire sur chacune de vos tables.
Si l'utilité n'en est pas complètement évidente pour vous pour le moment, elle devrait le devenir au fur et à mesure de votre
lecture.
Création d'une clé primaire
La création des clés primaires étant extrêmement semblable à la création d'index simples, j'espère que vous me pardonnerez si je
ne détaille pas trop mes explications.
Donc, à nouveau, la clé primaire peut être créée en même temps que la table, ou par la suite.
Lors de la création de la table
On peut donc préciser PRIMARY KEY dans la description de la colonne qui doit devenir la clé primaire (pas de clé composite
dans ce cas) :
Code : SQL
CREATE TABLE [IF NOT EXISTS] Nom_table (
colonne1 description_colonne1 PRIMARY KEY [,
colonne2 description_colonne2,
colonne3 description_colonne3,
...,]
)
[ENGINE=moteur];
Exemple : création de la table Animal en donnant la clé primaire dans la description de la colonne.
Code : SQL
CREATE TABLE Animal (
id SMALLINT AUTO_INCREMENT PRIMARY KEY,
espece VARCHAR(40) NOT NULL,
sexe CHAR(1),
date_naissance DATETIME NOT NULL,
nom VARCHAR(30),
commentaires TEXT
)
ENGINE=InnoDB;
Ou bien, on ajoute la clé à la suite des colonnes.
Code : SQL
CREATE TABLE [IF NOT EXISTS] Nom_table (
Partie 2 : Index, jointures et sous-requêtes
90/414
www.openclassrooms.com
Précédent

- 90/413

Suivant