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 884
    J'aime reçus:
    263
    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
Blog qui perd beaucoup de place sur google Problèmes de référencement spécifiques à vos sites Samedi à 09:28
Lecture Header avec CURL et outil WRI Développement d'un site Web ou d'une appli mobile Samedi à 05:29
Que feriez-vous à ma place ? Demandes d'avis et de conseils sur vos sites Vendredi à 08:59
Ajout de la marque dans le title Débuter en référencement Jeudi à 16:41
Mise à jour du guide d'indexation pour mobile de Google Référencement Google Jeudi à 12:53
htaccess ou noindex Netlinking, backlinks, liens et redirections Jeudi à 10:39
Création de sous domaine utile ? Noms de domaine et référencement Jeudi à 09:19
modification Favicon : délai de mise à jour Google Développement d'un site Web ou d'une appli mobile Jeudi à 06:14
Quel coût pour le contenu d'un site abandonné ? Développement d'un site Web ou d'une appli mobile Mercredi à 14:04
Crédits et mentions légales : pages à désindexer ou pas ? Référencement Google Mercredi à 11:27
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice