IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Doctrine2 PHP Discussion :

[débat] Maître détail détail


Sujet :

Doctrine2 PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Inscrit en
    Novembre 2008
    Messages
    423
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 423
    Par défaut [débat] Maître détail détail
    Bonjour,
    Il est indiqué dans les documentations que Doctrine supporte les clés primaires composées d'un identifiant et de la clé primaire d'une autre table.
    Il semble par contre que cela ne fonctionne pas lorsque la PK de cette autre table est elle même composée... :

    Si je prends le schéma (j'espère que mon symbolisme sera assez clair :-) )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    M1    -< D1    -< DD1
    - id  - M1_id  - M1_D1_id
          - id     - D1_id
                   - id
    // D1  : La PK est composée de la PK de M1 et d'un identifiant complémentaire
    // DD1 : La PK est ocmposée de la PK de D1 et d'un identifiant complémentaire
    J'ai l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     [Doctrine\ORM\Mapping\MappingException]
      It is not possible to map entity 'Fd1' with a composite primary key as part of the primary key of another entity 'Fdd1#fd1Fm1'.
    Quels moyens avez vous utilisé pour contourner cette limitation ?

  2. #2
    Membre éclairé

    Inscrit en
    Novembre 2008
    Messages
    423
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 423
    Par défaut
    J'envisage de supprimer les FK le temps de la génération des entités par Doctrine (avant de les remettre en place après cette génération pour que la base fasse quand même son boulot).
    Cela présente évidemment l'inconvénient de ne plus avoir le chargement automatique des objets liés, par contre, du coup, je peux créer une belle base bien normalisée.

    N'étant pas un gourou de symfony-doctrine loin s'en faut, je serais intéressé par vos remarques sur le sujet : avantages et inconvénients d'une telle démarche et, éventuellement, solutions que vous mettriez en oeuvre pour gérer avec Symfony et doctrine des situations traditionnellement représentées dans des SGBDR par des maîtres-détails-détails

    Si d'autres que moi sont intéressés par ce débat, n'hésitez pas à y participer.

    Pour ma part, j'ai déjà essayé, sur un petit projet, de remplacer toutes les PK que j'aurais classiquement utilisées (des codes sur 3 ou 4 caractères, par exemple) par des identifiants entiers autoincrémentés, le code devenant un champ indexé. Du coup, ce problème n'apparaissait pas mais j'ai trouvé très lourd la récupération des codes par multiples jointures. Du coup, je préfèrerais éviter cette solution pour mon prochain projet qui sera d'une autre envergure.

  3. #3
    Membre éclairé

    Inscrit en
    Novembre 2008
    Messages
    423
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 423
    Par défaut
    Personne n'a jamais fait de base avec ce genre de schéma ?

Discussions similaires

  1. Maître Détail Détail
    Par kryptong dans le forum Forms
    Réponses: 1
    Dernier message: 17/12/2012, 18h10
  2. Réponses: 4
    Dernier message: 21/09/2011, 13h26
  3. ApplyUpdates avec 02 tables en maître et détail
    Par aallal dans le forum Connexion aux bases de données
    Réponses: 3
    Dernier message: 02/07/2006, 18h04
  4. Insertion maître/détail d'interbase 6.
    Par abdelghani_k dans le forum Bases de données
    Réponses: 2
    Dernier message: 06/10/2004, 10h28
  5. [paradox] Post tables maître détail
    Par delphicrous dans le forum Bases de données
    Réponses: 1
    Dernier message: 23/09/2004, 10h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo