|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Membre actif
![]() Inscription : avril 2007 Messages : 435 ![]() |
Bonjour,
Je démarre un nouveau projet que je souhaite developper en couche. La technologie est PHP5 et MySQL via PDO, mais j'utiliserai une sorte de pseudo language dans ce post. Mon prototype est en train de voir le jour, l'implémenation est la suivante :
Mon questionnement vient des couches 1 et 2. En effet, dans ma couche 1, j'ai un objet par table SQL qui se charge de faire des opérations "atomiques" : Code :
Par exemple, j'ai un service contenant la méthode suivante : Code :
Dans cette architecture, je suis obligé de boucle sur les résultats d'un premier objet data avant d'aller tapper dans une autre table. Par exemple, je prends des lignes d'une table A et je veux récupérer le libellé associé à l'id d'une colonne dans une table B : Code :
Cependant je ne voie pas comment intégrer cette requête dans cette architecture. Dois-je la mettre dans la table A ? Dans la table B ? Cela ne remet-il pas en question l'architecture elle-même ? Dans ce cas simple, je pourrais mettre la requête avec jointure dans la table A car ce sont à la base des lignes de A que l'on veut enrichir, mais il y a des cas de multi-jointure où la question sera très probablement plus épineuse. Merci pour vos indications. |
||||||
|
|
00
|
|
|
#2 | |
|
Membre émérite
![]() Jean Ingénieur développement logiciels Inscription : mai 2011 Messages : 255 ![]() |
Citation:
3 tiers ne veut pas dire prendre un objet par table et faire des requêtes simples dessus. Tu peux avoir des requêtes élaborées qui utilisent des jointures complexes dans la couche données. Les seuls impératifs, c'est:
Par conséquent, si tu as besoin de jointures, fais au plus simple. Il vaut mieux du code simple et lisible dans ta couche données qu'un algo de malade dans ta couche métier. Ceci d'abord pour des raisons de performance, mais ensuite pour débugger ou faire évoluer ton code |
|
|
|
00
|
|
|
#3 |
|
Membre actif
![]() Inscription : avril 2007 Messages : 435 ![]() |
Bonjour,
Je viens de comprendre que le problème se situe au niveau de la contrainte que je me suis donné pour mes objets données, d'avoir pris table par table. En déclarant des objets plus globaux ça devrait simplifier le code au niveau de la couche métier sans pour autant rentrer dans une implémentation compliquée au niveau donnée. Merci pour ces réponses, que je n'attendais plus trop
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com