Où fixez-vous vos limites avec POO ? Dénormalisation.

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par dorian53, 19 Mai 2012.

  1. dorian53
    dorian53 WRInaute passionné
    Inscrit:
    10 Avril 2005
    Messages:
    1 909
    J'aime reçus:
    1
    Bonjour,

    Etes-vous plutôt full POO ou adepte de la dénormalisation ? Et comment ?

    Prenons le cas de la gestion d'un utilisateur, vous allez certainement gérer une classe User (liée à votre table en bdd).

    Code:
    User
    - id
    - nom
    - prenom
    - sexe_id
    ...
    Pour l'exemple, je souhaite m'attarder sur l'attribut sexe_id.
    Au niveau d'une conception SGBDR, le sexe_id correspond à une clé étrangère.

    1/ Allez-vous créer cette table sexe avec seulement deux valeurs ?
    2/ Allez-vous créer cette classe sexe ?
    3/ Comment allez-vous créer la méthode findAll de votre DAO Sexe ?
    - Va-t-il se connecter à un SGDBR
    - Va-t-il retourner deux entités Sexe ou un tableau en dur
    ...

    Code:
    Sexe
    - id
    - nom
    
    DAO_Sexe
    - findAll()
    
    Cet attribut est un exemple parmi tant d'autres.

    Merci pour vos retours.
     
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 734
    J'aime reçus:
    233
    1) Non, c'est juste M ou F, je vois pas trop l'intérêt.
    2) Non plus.
    3) Vu que je crée pas de modèle spécifique (Sex). Pour la traduc ou autres besoins, je le défini tt simplement comme ceci:
    PHP:
    <span class="syntaxdefault"><br />$sex&nbsp;</span><span class="syntaxkeyword">=&nbsp;array(</span><span class="syntaxstring">'M'&nbsp;</span><span class="syntaxkeyword">=>&nbsp;</span><span class="syntaxdefault">__</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'Homme'</span><span class="syntaxkeyword">),&nbsp;</span><span class="syntaxstring">'F'&nbsp;</span><span class="syntaxkeyword">=>&nbsp;</span><span class="syntaxdefault">__</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'Femme'</span><span class="syntaxkeyword">));<br />&nbsp;</span><span class="syntaxdefault"></span>
    Et pour les find:
    PHP:
    <span class="syntaxdefault"><br />$femaleUsers&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">User</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">findAllBySex</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'F'</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">$maleUsers&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">User</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">findAllBySex</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'M'</span><span class="syntaxkeyword">);<br />&nbsp;</span><span class="syntaxdefault"></span>
    (Sachant que j'utilise CakePHP)
     
  3. chtipepere
    chtipepere WRInaute occasionnel
    Inscrit:
    8 Janvier 2004
    Messages:
    449
    J'aime reçus:
    0
    Bonsoir,
    Malheureusement, le "genre" d'un utilisateur est un cas particulier.
    Il n'y a aucun intérêt à utiliser une clé étrangère, un enum suffira largement.

    Par contre, pour une valeur du type : "ville de naissance", "avatar par défaut", tu pourrais avoir besoin d'une clé étrangère provenant d'une table secondaire.
    Tu pourrais accéder à ces valeurs via un ORM en utilisant ce genre de code :
    Code:
    echo UsrTable::getInstance()->getCity()->getName();
    getCity étant un accesseur à la table city, qui possède un champ name.

    Si tu utilises un ORM, les classes nécessaires seront générées automatiquement (avec doctrine par exemple), les accesseurs et les "setteurs" existeront aussi automatiquement (très proche de la syntaxe cake PHP du dessus).
     
  4. dorian53
    dorian53 WRInaute passionné
    Inscrit:
    10 Avril 2005
    Messages:
    1 909
    J'aime reçus:
    1
    Merci pour vos réponses.

    OK pour l'ORM chtipepere, tout ça est parfaitement clair, c'est justement contre cette lourdeur d'implémentation que j'essaie de débattre. Jusqu'où faut-elle la suivre ? Et si on ne la suit pas comment gérer cette désorganisation ?

    Nous sommes d'accord que cette table sexe ne sert à rien :
    - faut-il virtualiser la classe coté code (avec un objet à deux attributs tout aussi inutile),
    - faut-il dériver sur du code à plat (avec un tableau comme spout)...

    Je suis aussi sensible aux conventions qu'à l'optimisation des performances, d'où mon dilemme.
     
Chargement...
Similar Threads - Où fixez limites Forum Date
Que pensez-vous de mon site de cours d'anglais ? Demandes d'avis et de conseils sur vos sites Hier à 17:00
Référencement de page interne pour chaque ville cible (SEO local) Référencement Google Hier à 11:10
Insérer mes annonces où je veux AdSense Mercredi à 15:16
Quelle plateforme ecommerce choisir Prestashop ou 1&1 Demandes d'avis et de conseils sur vos sites Mardi à 16:34
Utilisation Outil analyse SEO des balises de WRI Débuter en référencement Mardi à 14:41
50% des recherches sur Google n'aboutissent pas à un clic Référencement Google Mardi à 11:01
Pages Avis clients : à désindexer ou pas ? e-commerce Lundi à 18:12
Nouveau annuaire immobilier Annuaires et moteurs Samedi à 22:35
Avis sur la vitrine de Lydia Salou Artiste Peintre Demandes d'avis et de conseils sur vos sites Samedi à 02:36
Qu'écoutez-vous en ce moment ? Le café de WebRankInfo 15 Août 2019
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice