Mammouth du PHP |
19672 Messages
19 févr. 2006, 03:46
La liaison entre les tables doit se faire selon la dépendance et ce qu'on nomme les cardinalités. Je vais illustrer avec un exemple qui ne correspond peut-être pas du tout avec ton modèle directement, mais tu peux adapter :
Une table membre et une table news à priori sera liée, chaque new étant publiée par un membre. Mais un membre peut devoir poster plusieurs news, alors qu'à l'inverse, une news n'est publiée que par un et un seul membre.
Dans DBDesigner, tu as sur la gauche des outils pour créer les liens : la liaison que j'illustre est du type 1:n : si tu cliques sur le bouton [Nouvelle relation 1:n non identifiée] puis ensuite successivement sur la table membre puis sur la table news, tu verras alors s'ajouter dans la table news un champ qui sera la clé primaire de la table membre identifiée en clé étrangère, ce qui te permettra par la suite d'effectuer des jointures pour extraire les messages publiés par un membre en particulier.
À partir de ce principe de base, à toi de voir comment établir les relations s'il y a lieu entre certaines tables de ton modèle.
Dernière chose : un petit conseil pratique : lorsque tu nommes des clés primaires id , préfixe ces champs avec une partie du nom de la table, tu t'y retrouveras beaucoup plus facilement par la suite. Ainsi, nomme pour les tables de mon exemple news_id et membre_id : lors de l'ajout de clés étrangères, ce sera beaucoup plus parlant de voir un champ membre_id en clé étrangère dans la table news qu'un simple id qui serait en conflit avec la clé de news si elle se nommait également id tout court.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse 