nom_latin_espece et description_espece ?
J'espère que vous n'avez envisagé cette possibilité qu'une demi-seconde, car il est assez évident que c'est une très mauvaise
solution. En effet, ça obligerait à stocker la même description pour chaque chien, chaque chat, etc. Ainsi que le même nom latin.
Nous le faisions déjà avec le nom courant, et ça aurait déjà pu poser problème. Imaginez que pour un animal vous fassiez une
faute d'orthographe au nom de l'espèce, "chein" ou lieu de "chien" par exemple. L'animal en question n'apparaîtrait jamais
lorsque vous feriez une recherche par espèce.
Il faudrait donc un système qui nous permette de ne pas répéter la même information plusieurs fois, et qui limite les erreurs que
l'on pourrait faire.
La bonne solution est de créer une seconde table : la table Espece. Cette table aura 4 colonnes : le nom courant, le nom latin, une
description, et un numéro d'identification (qui sera la clé primaire de cette table).
La table Espece
Voici donc la commande que je vous propose d'exécuter pour créer la table Espece :
Code : SQL
CREATE TABLE Espece (
id SMALLINT UNSIGNED AUTO_INCREMENT,
nom_courant VARCHAR(40) NOT NULL,
nom_latin VARCHAR(40) NOT NULL UNIQUE,
description TEXT,
PRIMARY KEY(id)
)
ENGINE=InnoDB;
On met un index UNIQUE sur la colonne nom_latin pour être sûr que l'on ne rentrera pas deux fois la même espèce. Pourquoi sur
le nom latin et pas sur le nom courant ? Tout simplement parce que le nom latin est beaucoup plus rigoureux et réglementé que le
nom courant. On peut avoir plusieurs dénominations courantes pour une même espèce ; ce n'est pas le cas avec le nom latin.
Bien, remplissons donc cette table avec les espèces déjà présentes dans la base :
Code : SQL
INSERT INTO Espece (nom_courant, nom_latin, description) VALUES
('Chien', 'Canis canis', 'Bestiole à quatre pattes qui aime les
caresses et tire souvent la langue'),
('Chat', 'Felis silvestris', 'Bestiole à quatre pattes qui saute
très haut et grimpe aux arbres'),
('Tortue d''Hermann', 'Testudo hermanni', 'Bestiole avec une
carapace très dure'),
('Perroquet amazone', 'Alipiopsitta xanthops', 'Joli oiseau
parleur vert et jaune');
Ce qui nous donne la table suivante :
id
nom_courant
nom_latin
description
1 Chien
Canis canis
Bestiole à quatre pattes qui aime les caresses et tire souvent la langue
2 Chat
Felis silvestris
Bestiole à quatre pattes qui saute très haut et grimpe aux arbres
3 Tortue d'Hermann Testudo hermanni
Bestiole avec une carapace très dure
4 Perroquet amazone Alipiopsitta xanthops Joli oiseau parleur vert et jaune
Vous aurez remarqué que j'ai légèrement modifié les noms des espèces "perroquet" et "tortue". En effet, et j'espère que les
biologistes pourront me pardonner, "perroquet" et "tortue" ne sont pas des espèces, mais des ordres. J'ai donc précisé un peu
(si je donne juste l'ordre, c'est comme si je mettais "carnivore" au lieu de "chat" - ou "chien" d'ailleurs).
Partie 2 : Index, jointures et sous-requêtes
94/414
www.openclassrooms.com
Précédent

- 94/413

Suivant