Salut,
je réalise des applications qui utilisent une base de données. La plupart du temps, se sont des applications Web (Php + Mysql).
Depuis quelques temps, je remets pas mal en question la manière de m'y prendre. Je suis en train de faire un petit CMS, qui gère des news, des commentaires dessus, et des catégories sur ces news (un truc à la con quoi ). Dans la BD, il y donc 4 tables : une pour chacune de ces entités, plus une pour la relation news<->catégorie (j'aimerais avoir des news dans plusieurs catégories).
Jusqu'à présent, je réalisais en gros, une classe pour chaque entités (news, commentaire, et catégorie), avec pour chacune d'elle, un ensemble de méthodes : (chacunes encapsulent l'accès à la base de donnée)
- charger (identifiant)
- charger (identifiant, + autres valeurs de l'entité)
- modifier (valeurs de l'entité)
- supprimer (identifiant)
Plus éventuellement deux-trois bricoles en plus. L'idée étant d'avoir un objet réprésentant une news par exemple, et d'appeler des méthodes dessus qui iront la BD à jour ou qui récupère les informations directement dedans.
Bon, et voilà, en fait, c'est complètement moisi :
- si je veux récupérer une liste de news par ex., l'idéal aurait été de récupérer une liste d'identifiant, et de faire un charger dessus por chacun d'eux. Mais bon, niveau perf, sapu
- j'ai donc rajouter le deuxième charger. Ca me permettait de récupérer toutes les infos en une seule requête, puis d'avoir mes objets pour faire des majs et tout dessus. Mais bon, ça me semble super bancal, je peux théoriquement mettre n'importe quoi dans les membres de mes classes
- le modifier est pas trop mal comme ça
- pour supprimer, je passe l'identifiant. Ca me semble pas très logique : ça veut dire que l'objet que je veux supprimer ne représente rien en fait. Une solution aurait été de virer l'identifiant de supprimer, et d'obliger à charger l'objet avant de le supprimer, mais c'est pas terrible non.
Bref, voilà où j'en suis dans ma réflexion. Au (tout) début, je trouvais ça pas mal, mais là, plus ça va, plus je trouve ça moisi.
Pour finir la question Je voudrais savoir comment vous représenteriez ça ? (au niveau design des classes et des relations entre objets).
Voilà, merci
Message édité par multani le 28-06-2005 à 16:21:38