Nous avons besoin de stocker des informations concernant les 3 objets de notre application. Dans une base de données relationnelle (comme MySQL ou PostgreSQL), les informations sont stockées dans des tables. Nous allons donc créer une table par type d'objet. L'ensemble des tables (et des contraintes) d'une base de données s'appelle le schéma de la base de donnée.
Nous allons construire graphiquement le schéma de la base dans DBDesigner. Une fois celui-ci lancé, vous devez avoir cette fenêtre :
On retrouve une organisation classique d'IDE, avec des menus, sur la gauche une liste d'actions possibles, et sur la droite des informations concernant l'objet sélectionné.
Nous allons créer la table “utilisateur”, pour cela cliquez sur l'icône de création de table, dans la partie gauche, et cliquez ensuite sur la partie blanche de l'application.
Il faut maintenant modifier la table créée afin de la faire correspondre à nos informations. Il faut pour cela double-cliquer sur la table :
Il suffit maintenant de modifier le nom de la table afin de l'appeler “utilisateur”. Si une fois renseigné le nom de la table dans la boite “table name”, vous appuyez sur la touche Entrée, DBDesigner créera automatique une colonne portant le nom “idutilisateur”, et si vous appuyez encore une fois sur Entrée, il ajoutera le type “integer”, “nn” (Not Nul), “ai” (Auto-Increment) et “Unsigned” à cette colonne. Ca tombe bien, c'est exactement ce qu'il nous faut ! En effet, cette colonne nous servira d'identifiant unique pour chaque utilisateur.
La base de données nous garantira que dans toutes la table, un numéro n'apparaîtra qu'une seule fois, que pour chaque nouvelle ligne il sera incrémenté de 1 (AI) et qu'il ne pourra pas être nul.
On peut ajouter maintenant une colonne s'appelant “login” de type “varchar” et une autre colonne s'appelant “mp” de type “varchar”.
Il suffit de recommencer cette opération pour les autre tables. Avant de passer à la suite, n'oubliez pas de sauvegarder votre travail dans le répertoire propel en le nommant forum.
La colonne “date” est de type “timestamp” car nous voulons avoir à la fois le jour et l'heure du post.
Il faut maintenant ajouter les relations entre ces tables. Voici les relations que nous avons :
Les relations à créer sont des relations de type ”(1-n) non identifiantes”. Cela signifie que pour 1 élément de la table source, il peut correspondre n éléments de la table destination et pour 1 élément de la table destination il ne peut correspondre qu'un seul élément de la table source.
Pour créer une relation entre 2 tables il faut effectuer les actions suivantes :
Ainsi pour créer la relation “un message est poste par un utilisateur”, la table source est la table “utilisateur” et la table message est la destination. En effet, un utilisateur peut créer autant de message qu'il veut, par contre un message ne peut avoir été créer que par un utilisateur.
Donc, pour créer cette relation il suffit de sélectionner l'outil “relation (1-n) non identifiante”, de cliquer en premier sur la table “utilisateur” et en second sur la table “message”.
Ceci créera la relation nommée par défaut “Rel_01”, ainsi qu'une nouvelle colonne “utilisateur_idutilisateur” dans la table “message”. Il est possible de changer le nom de la relation, ainsi que le nom de l'attribut en double-cliquant sur le nom de la relation (C'est d'ailleurs le seul moyen de modifier le nom de l'attribut).
Il suffit maintenant de procéder de même pour les autres relations, afin d'obtenir le schéma suivant :
Sauvegardez votre fichier et passez à l'étape suivante, où nous allons utiliser Propel afin de générer à la fois le sql permettant de créer notre base ainsi que le php permettant d'accéder à celle-ci. A la fin de cette étape vous devez donc avoir dans votre répertoire propel un fichier forum.xml.
| Page précédente : Spécification de la base | Document principal | Page suivante : Création du squelette Agavi |
~~DISCUSSION~~