Traductions de cette page?:

Conception de la base

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 :

Application

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é.

Utilisateur

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.

Avec une table vierge

Il faut maintenant modifier la table créée afin de la faire correspondre à nos informations. Il faut pour cela double-cliquer sur la table :

Information sur une 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”.

La table utilisateur complète

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.

Messages

La table Message

La colonne “date” est de type “timestamp” car nous voulons avoir à la fois le jour et l'heure du post.

Forums

La table forum

discussions

La table discussion

Schéma première version

Ce qui nous donne finalement le schéma suivant :

La base 1ere version

Relations

Il faut maintenant ajouter les relations entre ces tables. Voici les relations que nous avons :

  1. Un Message est posté par un utilisateur
  2. Un Message fait parti d'une discussion
  3. Une discussion fait partie d'un forum
  4. Une discussion a été ouverte par un utilisateur

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 :

  1. Cliquer sur le bouton représentant la relation
  2. Cliquer sur la table source
  3. Cliquer sur la table destination

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”.

La relation entre utilisateur et 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).

Edition de relation

Il suffit maintenant de procéder de même pour les autres relations, afin d'obtenir le schéma suivant :

Le schema fini

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.

~~DISCUSSION~~

 
/opt/dokuwiki/data/pages/doc/dbcreation.txt · Dernière modification: 2008/11/21 15:59 (modification externe)
 
RSS - 2007 © CoreDmp