Page 1 sur 2

Est-ce une bonne modelisation de table?

Posté : 17 févr. 2006, 15:00
par momox
Salut,
pour mon site j'ai créer un table mysql a l'aide du logiciel de fabforce et j'aurais voulu avoir votre avis sur une possible amelioration de la table ou une optimisation...
Voici comment celle-ci est optimisée.
Image
Merci d'avance

Posté : 17 févr. 2006, 15:07
par Cobaye
Perso une chose, je met un champ au format TEXT que quand c'est vraiement nécessaire sinon je met des varchars

exemple : user_msn en TEXT je l'aurai mis plutot en varchar quitte à faire un varchar 255, je doute qu'une adresse mail dépasse 255 caractères !

Posté : 18 févr. 2006, 19:28
par momox
N'y a t'il pas des champs que je pourrais lier?
@+

Posté : 19 févr. 2006, 03:46
par Cyrano
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.

Posté : 20 févr. 2006, 00:41
par momox
ok... je vais voir ca
@+

Re: Est-ce une bonne modelisation de table?

Posté : 21 févr. 2006, 23:45
par momox
Est-ce que cela est mieux comme ca?
Ai-je fait une erreur quelquonque?
Image
Merci d'avance

Posté : 22 févr. 2006, 00:57
par Cyrano
à priori, tu as inversé les cardinalités :-k

On devrait voir la clé primaire de ta table ltcf_members en clé étrangère dans les tables liées et non l'inverse il me semble.

Posté : 22 févr. 2006, 01:00
par momox
Je dois cliquer sur quelle table en premier?
La table avec les membres ou celle qui va etre liée a la table des membres?
@+

Posté : 22 févr. 2006, 01:03
par Cyrano
dans une cardinalité 1:n, clique d'abord sur la table 1 et ensuite sur la table n : Exemple: un membre peut avoir plusieurs dossiers, mais un dossier ne concerne qu'un et un seul membre : il est donc logique de trouver la clé primaire du membre en clé étrangère dans la table des dossiers: sinon, un même dossier concernera plusieurs membres mais un membre ne pourra avoir qu'un seul dossier.

Pour les types de clés primaire, au lieu de NUMERIC, je te suggère quand même INT en cochant "AI" (auto_increment)

Posté : 22 févr. 2006, 01:05
par momox
Donc je fais l'inverse de ce que j'ai fait!
C'est ca?
@+

Re: Est-ce une bonne modelisation de table?

Posté : 22 févr. 2006, 01:16
par momox
Voila ce que j'ai fait, mais dans les parametres des liaisons je suis un peu perdu...
Voila a quoi ressemble ma bdd pour le moment:
Image
Voila ensuite a quoi ressemble les parametres de toutes mes liaisons:
Image
Merci d'avance

Posté : 22 févr. 2006, 01:20
par Cyrano
Tu as des doublons dans les relations avec les tables news et forum_topic: supprimes-en un pour chaque table et ça commencera à avoir beaucoup d'allure. :)

Posté : 22 févr. 2006, 01:22
par momox
Je ne vois pas de quoi tu parles...
Le forum est séparé du systeme de news!
@+

Posté : 22 févr. 2006, 09:14
par momox
J'ai l'impression d'avoir localisé ma gaffe...
Au niveau de chaque liaison, il se trouve que l'on retrouve a chaque fois ltcf_members_member_id et ce deux fois..
Est-ce de cela dont tu parlais?
@+

Posté : 22 févr. 2006, 18:22
par Cyrano
tout juste ;)