conan Posté 10 Juillet 2006 Posté 10 Juillet 2006 Bonjour, Voilà j'ai fais mon MCD pour un site mais mon problème est pour le passer en classe pour PHP5 Voici une partie de mon MCD -------------------- tVideo idVideo (PK) idTypeVideo strTitre idFormat ...etc -------------------- tFilms idFilm (PK) idVideo idGenre strCodeImdb -------------------- déjà je pense que je dois faire une classe cFilms qui hérite de cVideo dans chaque classe dois-je mettre comme variable de la classe mes id ? exemple cVideo : idVideo, idTypeVideo, idFormat ... ou cVideo : idvideo,strTypeVideo,strTitre,strFormat... et donc remplir ces variables issues de mes relation lors de ma requete select
dièse Posté 10 Juillet 2006 Posté 10 Juillet 2006 Bonjour, A partir d'un MCD ce que tu obtiens c'est le shéma de ta base de donnée. Donc au mieux si tu appliques un mapping strict, tu peux déduire de ce shéma tes classes d'accès aux donnée (DAO : classes ne comprenant que des méthodes du type getChamp() et setChamp() ). Dans ce cas oui, à tous les champs de tes tables peuvent correspondre des attributs de tes classes, par contre l'héritage n'est pas indiqué. Si tu ne comptes pas développer une couche d'accès aux données, et que tu parles de tes classes métiers, alors ta logique métier demande très certainement une modélisation propre qui ne correspond peut-être pas à ton MCD. Pour les classes métiers l'héritage peut être intéressant.
conan Posté 10 Juillet 2006 Auteur Posté 10 Juillet 2006 A partir d'un MCD ce que tu obtiens c'est le shéma de ta base de donnée. Donc au mieux si tu appliques un mapping strict, tu peux déduire de ce shéma tes classes d'accès aux donnée (DAO : classes ne comprenant que des méthodes du type getChamp() et setChamp() ). Dans ce cas oui, à tous les champs de tes tables peuvent correspondre des attributs de tes classes, par contre l'héritage n'est pas indiqué. De toute façon j'ai un besoin d'accès au donnée ne serais-ce que que pour mettre à jour celles-ci mais je pense le faire par des méthodes plus "générales" ajoute films, Modifier film qui ne se feront que par forme de fiche, donc une mise à jour/ajout d'un enregistrement. donc je pense que je n'ai pas besoin de ce mappage stricts. Si tu ne comptes pas développer une couche d'accès aux données, et que tu parles de tes classes métiers, alors ta logique métier demande très certainement une modélisation propre qui ne correspond peut-être pas à ton MCD. Pour les classes métiers l'héritage peut être intéressant. Voilà c'est plus sous cette forme que je vois la chose et c'est donc pourquoi je me demande quelle informations issu de mon MCD je dois retrouver dans mes classes. Une chose que je n'ai pas expliquer et qui je pense fais que mon problème ne peut être identifié : Je ne listerais pas à chaque fois l'ensemble des films, mais par exemple ceux commencant pas une lettre/chiffre que l'utilisateur sélectionnera, mais également la page de la liste issu de la requete. aussi, si l'utilisateur avait paramètré un filtre pour ne voir qu'un genre de film la requete sera en conséquence me générant des instances de film comme n'importe qu'elle liste globale de film. par contre si l'utilisateur à paramètrer (dans son compte) qu'il ne voulait que voir le nom du film et le codeImdb, mes variables de classe "en trop" comme idGenre ou strGenre (ca dépends le choix) risque de me posais des problème... surtout que mes requetes seront optimisées en fonction des paramètre de l'utilisateur, pas besoin de faire des jointures pour une info que je n'afficherais pas. Donc voilà mon problème, si j'avais à toujours afficher l'ensemble des colonnes de ma "grille" je ne l'aurais pas eu. voilà pourquoi je ne vois pas de solution pour le moment.
Spidetra Posté 10 Juillet 2006 Posté 10 Juillet 2006 Tu cherche a implémenter un modèle objet en te basant sur deux concepts qui ne sont pas objets. - ton modèle de donnée relationnel - tes vues utilisateurs Je comprend tes interrogations sur les problèmes de mapping Objet/Relationnel. Si tu es familier avec les diagrammes de classe UML, une solution consiste à modéliser tes classes en UML et à utiliser des outils de mapping qui vont te générer : tes classes, ton modèle relationnel. Il faut juste t'assurer que ton outil modélise correctement ton modèle relationnel. C'est important pour ne pas avoir de pb de performance. Je ne comprend pas la 2° partie de ton post. Ton modèle DOIT ETRE totalement indépendant des tes vues utilisateurs.
conan Posté 10 Juillet 2006 Auteur Posté 10 Juillet 2006 Tu cherche a implémenter un modèle objet en te basant sur deux concepts qui ne sont pas objets. - ton modèle de donnée relationnel - tes vues utilisateurs Oui je sais et c'est je pense ce qui me bloque. J'ai pas l'habitude de passer par des classes, même au boulot (vb.net). Si tu es familier avec les diagrammes de classe UML, une solution consiste à modéliser tes classes en UML et à utiliser des outils de mapping qui vont te générer : tes classes, ton modèle relationnel. Il faut juste t'assurer que ton outil modélise correctement ton modèle relationnel. C'est important pour ne pas avoir de pb de performance. non aucunement familier, je profite de ma semaine de congès pour avancer sur ma migration (qui a été faite au niveau mysql ce week-end) mais là je me retrouve bloquer avec cette relation DB/Php. resumé 2nde partie du post en plus clair (je pense) Sur le site des utilisateurs peuvent dans leur compte paramétré le listing qui sera affiché (les colonnes d'un tableau) donc lorsque je vais créer ce tableau, je ne vais pas faire inutilement des jointures par exemple (à ma table tgenre) si l'utilisateur ne veut pas afficher la colonne genre des films. Je voudrais simplement un exemple de comment je pourrais faire par rapport aux tables que j'ai fournis. Sinon je peux prendre un autre exemple avec le même cas. Merci
Spidetra Posté 10 Juillet 2006 Posté 10 Juillet 2006 (modifié) Je ne comprend pas, c'était du second degré. Ton modèle DOIT ETRE totalement indépendant des tes vues utilisateurs. Modifié 10 Juillet 2006 par Spidetra
conan Posté 10 Juillet 2006 Auteur Posté 10 Juillet 2006 Ok donc si je comprend bien je dois faire ma classe film ainsi : class cFilms extends cVideo { private $idFilm; private $strCodeimdb; private $strGenre; function GetGenre() {return $this->strGenre;} function GetTitre() {return $this->strTitre;} } ------ Ma classe video ainsi class cVideo { protected $idVideo; protected $strTitre; protected $strFormat; protected $intQualite; protected $strResume; protected $dtEnrCrea; protected $lngTaille; protected $strNomMembre; }
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant