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:
    9 004
    J'aime reçus:
    284
    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
Ajout d'un bandeau latéral... bien ou non ? Demandes d'avis et de conseils sur vos sites Hier à 18:09
Chute libre des abonnés Youtube et des vues YouTube, Google Images et Google Maps Hier à 12:32
Astuce Comment être bien référencé avec blog de Podcast et/ou vidéo ? Débuter en référencement Vendredi à 17:31
Plusieurs sites: Mêmes sources de backlinks Débuter en référencement Vendredi à 08:30
SEO : un seul site ou plusieurs si on a plusieurs activités ? Débuter en référencement Jeudi à 15:35
Baisse de backlinks, pourquoi ? Netlinking, backlinks, liens et redirections Lundi à 19:14
Quelle syntaxe pour les mots-clés ? Débuter en référencement Lundi à 09:31
Le secret de Pinterest pour avoir un aussi bon référencement Référencement Google 4 Juillet 2020
Pourquoi Facebook bloque le partage de mon site ? Facebook 3 Juillet 2020
Le journal d'un fou Demandes d'avis et de conseils sur vos sites 2 Juillet 2020
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice