|
Page 1 sur 3 Proposé par Nadine Dans les bases de données un peu complexe, il est souvent nécessaire de faire des jointures de table quand on se retrouve avec une relation de 1 à n. Ce système permet de relier plusieurs tables par leurs id afin d'éviter d'alourdir inutilement la base de données. Nous allons voir comment Dreamweaver permet de créer une jointure de tables très facilement, pratiquement sans taper de code.
Principe des jointures de tables
Prenons le cas d'un catalogue de livres où l'on veut rentrer les renseignements suivants : titre du livre, nom et prénom de l'auteur, collection à laquelle appartient le livre
Le premier réflexe quand on ne connait pas les bases de données serait de créer une seule table contenant toutes ces informations :
| id_livre |
titre_livre |
nom_auteur |
prenom_auteur |
collection |
| 1 |
Les fourmis |
Werber |
Bernard |
Le livre de poche |
| 2 |
Mercure |
Nothomb |
Amélie |
Le livre de poche |
| 3 |
Robert des noms propres |
Nothomb |
Amélie |
Albin Michel |
| 4 |
Sans feu ni lieu |
Vargas |
Fred |
J'ai lu |
| 5 |
Debout les morts |
Vargas |
Fred |
J'ai lu |
| 6 |
Le jour des fourmis |
Werber |
Bernard |
Albin Michel |
CE N'EST PAS LA BONNE SOLUTION !
En effet, on voit que les informations concernant les auteurs et la collection sont dupliquées et alourdissent inutilement la base. Pour 5 livres du même auteur, on rentre 5 fois les informations concernant son nom et son prénom, avec tous les risques de faute de frappe que cela représente...
Avec la méthode Merise, on crée 3 tables :
- une table pour les collections,
- une table pour les auteurs,
- une table livres dans laquelle on ajoute seulement l'identifiant correspondant à l'auteur et celui correspondant à la collection.
TABLE AUTEURS
| id_auteur |
nom_auteur |
prenom_auteur |
| 1 |
Werber |
Bernard |
| 2 |
Nothomb |
Amélie |
| 3 |
Vargas |
Fred |
TABLE COLLECTIONS
| id_collection |
collection |
| 1 |
Le livre de poche |
| 2 |
Albin Michel |
| 3 |
J'ai lu |
TABLE LIVRES
| id_livre |
titre_livre |
id_auteur |
id_collection |
| 1 |
Les fourmis |
1 |
1 |
| 2 |
Mercure |
2 |
1 |
| 3 |
Robert des noms propres |
2 |
2 |
| 4 |
Sans feu ni lieu |
3 |
3 |
| 5 |
Debout les morts |
3 |
3 |
| 6 |
Le jour des fourmis |
1 |
2 |
Création des tables
On crée une base "bouquins" et on crée la structure de ces 3 tables avec phpMyAdmin.
#
# Structure de la table `auteurs`
#
CREATE TABLE auteurs (
id_auteur int(11) NOT NULL auto_increment,
nom_auteur varchar(255) NOT NULL default '',
prenom_auteur varchar(255) NOT NULL default '',
PRIMARY KEY (id_auteur)
) TYPE=MyISAM;
# --------------------------------------------------------
#
# Structure de la table `collections`
#
CREATE TABLE collections (
id_collection int(11) NOT NULL auto_increment,
collection varchar(255) NOT NULL default '',
PRIMARY KEY (id_collection)
) TYPE=MyISAM;
# --------------------------------------------------------
#
# Structure de la table `livres`
#
CREATE TABLE livres (
id_livre int(11) NOT NULL auto_increment,
titre_livre varchar(255) NOT NULL default '',
id_auteur int(11) NOT NULL default '0',
id_collection int(11) NOT NULL default '0',
PRIMARY KEY (id_livre)
) TYPE=MyISAM;
On insère les noms et prénoms de nos trois auteurs et les noms des collections dans leurs tables respectives (On verra ensuite comment utiliser un formulaire d'insertion pour insérer d'autres enregistrements).
Par contre, on laisse la table livres totalement vide. On remplira cette table directement avec un formulaire d'insertion.
|