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

Schéma Discussion :

Utilisateur, Partenaire et Evénements


Sujet :

Schéma

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 401
    Points : 120
    Points
    120
    Par défaut Utilisateur, Partenaire et Evénements
    Bonjour à tous,

    voilà ma problématique.

    J'ai une entité utilisateur (usr) et une entité partenaire (ptr), chacune de ses entités peut être un créateur d'évènement, mais pour le détail d'un évènement, les informations ne seront pas les mêmes si c'est un partenaire ou un utilisateur , j'ai trouvé 3 solutions à ce problème, mais je suis pas vraiment convaincu :

    1 - Soit je stock dans la table évènement le ptr_id et le usr_id (je trouve pas ça propre car j'ai deux colonnes pour une même information)

    2-Soit je stock dans une table les informations communes de ptr et usr (genre nom, date de création, etc...), j'appelle cette table créateur, et j'utilise le créateur id dans la table évènement, encore ici je trouve pas ça propre car je dois vérifier les informations récupérér et déduire si c'est un utilisateur ou un créateur

    3-dernière solution trouvée, je prends la solution 2 et je rajoute dans table créateur un type (usr ou ptr), mon problème ici est qu'il faut que je rajoute un trigger à l'insertion pour ajouter le type, c'est d'après moi la plus normalisée

    Avez-vous d'autre propositions plus propre encore ?

    Merci
    www.ou-dejeuner.com A chacun son déjeuner ! |Blackprism.org

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 45
    Points : 58
    Points
    58
    Par défaut
    Salut,

    Je suis pas sûr de ma réponse, mais tu ne peux pas utiliser des sous-types de ton entité evenement, qui seront reliés au createur qui leur correspond?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 401
    Points : 120
    Points
    120
    Par défaut
    Citation Envoyé par bergie Voir le message
    Salut,

    Je suis pas sûr de ma réponse, mais tu ne peux pas utiliser des sous-types de ton entité evenement, qui seront reliés au createur qui leur correspond?
    Non car ça voudrait dire que j'ai deux colonnes pour une information : créateur id et son type, je pense que ce n'est pas normalisé.
    www.ou-dejeuner.com A chacun son déjeuner ! |Blackprism.org

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 45
    Points : 58
    Points
    58
    Par défaut
    En gardant la table "usr" et la table "ptr" sans table "createur"

    usr ---1,n--- [CIF] ---1,1--- EvUsr
    ptr ---1,n--- [CIF] ---1,1--- EvPtr

    "EvUsr" et "EvPtr" étant des sous-types d'evenement, tu n'as pas besoin de propriété "type".

    Non?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 401
    Points : 120
    Points
    120
    Par défaut
    ça c'est ma solution 1, elle me convient pas car j'ai toujours 2 colonnes pour une information...
    www.ou-dejeuner.com A chacun son déjeuner ! |Blackprism.org

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 45
    Points : 58
    Points
    58
    Par défaut
    Bah c'est pas tout à fait la même chose.

    Dans ta solution 1, tu mets ptr_id et usr_id dans evenement, donc si j'ai bien compris, tu renseignes l'un ou l'autre suivant le créateur. Il te reste donc un champ non utilisé.

    Dans ce que je propose, en utilisant les sous-types, tu as soit ptr_id, soit usr_id dans l'evenement, et non les 2.

    J'ai mal compris quelque chose?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 401
    Points : 120
    Points
    120
    Par défaut
    Citation Envoyé par bergie Voir le message
    Bah c'est pas tout à fait la même chose.

    Dans ta solution 1, tu mets ptr_id et usr_id dans evenement, donc si j'ai bien compris, tu renseignes l'un ou l'autre suivant le créateur. Il te reste donc un champ non utilisé.

    Dans ce que je propose, en utilisant les sous-types, tu as soit ptr_id, soit usr_id dans l'evenement, et non les 2.

    J'ai mal compris quelque chose?
    Qu'appels-tu sous type ?
    www.ou-dejeuner.com A chacun son déjeuner ! |Blackprism.org

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 45
    Points : 58
    Points
    58
    Par défaut
    Plutôt qu'un explication pas forcément très claire:

    http://sqlpro.developpez.com/cours/m...tion/heritage/

    Bonne lecture ^^

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 401
    Points : 120
    Points
    120
    Par défaut
    je connais l'héritage

    Concrètement ça donnerait quelle colonnes dans quelles tables ?
    www.ou-dejeuner.com A chacun son déjeuner ! |Blackprism.org

  10. #10
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 45
    Points : 58
    Points
    58
    Par défaut
    USR -> idUSR
    PTR -> idPTR

    EVENT -> idEvent
    EVUSR -> idEvent, idUSR
    EVPTR -> idEvent, idPTR

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 401
    Points : 120
    Points
    120
    Par défaut
    Citation Envoyé par bergie Voir le message
    USR -> idUSR
    PTR -> idPTR

    EVENT -> idEvent
    EVUSR -> idEvent, idUSR
    EVPTR -> idEvent, idPTR
    En fait je viens juste de comprendre en même temps que tu répondais

    Si je fais un select * from event, que va-t-il me sortir pour le nom du créateur de l'évènement ?
    www.ou-dejeuner.com A chacun son déjeuner ! |Blackprism.org

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 38
    Points : 15
    Points
    15
    Par défaut
    Pour accéder au nom du créateur, va falloir passer par des jointures.
    Un select uniquement sur Event te donnera juste la liste des événements, sans les attributs propres à chaque type d'événement particulier, ni ceux du créateur.
    Mais là, on n'est plus dans le MCD ^^

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 401
    Points : 120
    Points
    120
    Par défaut
    Citation Envoyé par Belinformatic Voir le message
    Pour accéder au nom du créateur, va falloir passer par des jointures.
    Un select uniquement sur Event te donnera juste la liste des événements, sans les attributs propres à chaque type d'événement particulier, ni ceux du créateur.
    Mais là, on n'est plus dans le MCD ^^
    Donc ça revient à ma question initiale : si je fais un SELECT avec deux left join (pour usr et ptr) comment savoir si c'est un ptr ou usr sans passer des conditions ? (peut être que c'est simplement impossible)
    www.ou-dejeuner.com A chacun son déjeuner ! |Blackprism.org

  14. #14
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 45
    Points : 58
    Points
    58
    Par défaut
    En effet, je ne sais pas si c'est possible, je ne peux pas t'aider plus que ça désolé.
    Tout ce que je peux te dire, c'est qu'au niveau modélisation, je ferais comme ça (j'ai peut-être tort). C'est vrai qu'ensuite ça complique les requêtes...

    Bon courage ^^

    EDIT: Au pire, tu peux créer une vue pour faciliter ton select.

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 401
    Points : 120
    Points
    120
    Par défaut
    Merci quand même pour ton aide

    Je vais réfléchir, je suis pointilleux, et j'aime faire les choses de la meilleure façon
    www.ou-dejeuner.com A chacun son déjeuner ! |Blackprism.org

  16. #16
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour à tous,

    Si j'ai bien compris, ton souci se situe sur le test du nom de l'entité (de la table) où se trouve la personne.

    2 Suggestions :

    1*************1
    USR
    - Id_USR (PK)
    ...

    PTR
    - Id_PTR (PK)
    ...

    EVT_Entete
    - Id_EVT (PK)
    - Date_Creation
    ...

    EVT_Detail_USR
    - Id_EVT (PK)
    - Id_USR (PK)
    ...

    EVT_Detail_PTR
    - Id_EVT (PK)
    - Id_PTR (PK)
    ...

    Relation
    USR ---(1,n)---[liaison détail événement]---(0,1) EVT_Detail_USR ;
    PTR ---(1,n)---[liaison détail événement]---(0,1) EVT_Detail_PTR ;
    EVT_Entete ---(1,n)---[liaison détail événement]---(1,1) EVT_Detail_USR ;
    EVT_Entete ---(1,n)---[liaison détail événement]---(1,1) EVT_Detail_PTR.

    ==> Problème : autant d'entité détail que d'entité qui créé du détail . Mais gérable.


    2*************2
    USR_PTR
    - Id_USR_PTR (PK)
    - Type_USR_PTR (U=USR, P=PTR)
    ...
    ==> Toutes les personnes dans la même entité (si ce sont les mêmes données, bien entendu), le flag renseignant sur le type de personne. Cela résoud les tests de présence dans une table ou une autre par son nom.

    EVT
    - Id_EVT (PK)
    - Id_USR_PTR
    - Date_Creation
    ...

    Relation
    USR_PTR ---(1,n)---[liaison événement]---(1,1) EVT.
    *************

    Ou bien, je n'ai rien compris... ce qui est tout à fait possible...
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  17. #17
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 45
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par shadeoner Voir le message
    Merci quand même pour ton aide

    Je vais réfléchir, je suis pointilleux, et j'aime faire les choses de la meilleure façon
    Pas de quoi
    Je comprends, je suis assez comme ça aussi ^^


    @Richard_35
    Je me trompe peut-être, mais j'ai l'impression que ta premiere suggestion revient à ce que je lui proposais, et que la deuxième fait partie des 3 solutions présentées dans le premier message.

  18. #18
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonsoir Bergie,

    Citation Envoyé par Bergie
    USR -> idUSR
    PTR -> idPTR

    EVENT -> idEvent
    EVUSR -> idEvent, idUSR
    EVPTR -> idEvent, idPTR
    Citation Envoyé par Shadeoner
    3-dernière solution trouvée, je prends la solution 2 et je rajoute dans table créateur un type (usr ou ptr), mon problème ici est qu'il faut que je rajoute un trigger à l'insertion pour ajouter le type, c'est d'après moi la plus normalisée
    Oui, c'est exact, mais avec les deux sous la même forme. Mais je suis passé au-dessus de ta présentation, pourtant très concise et très claire.
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  19. #19
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 45
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par Richard_35
    Oui, c'est exact, mais avec les deux sous la même forme.
    Euuh... Comment ca?

  20. #20
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Eh bien, sous forme d'entités et de relations finales.
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/07/2015, 16h06
  2. Réponses: 0
    Dernier message: 08/04/2011, 18h26
  3. interface utilisateur avec OpenGL
    Par demis20 dans le forum OpenGL
    Réponses: 6
    Dernier message: 03/10/2002, 12h27
  4. Réponses: 8
    Dernier message: 05/06/2002, 11h55
  5. [Kylix] Sauvegarde de donnée utilisateur....
    Par Eclypse dans le forum EDI
    Réponses: 1
    Dernier message: 11/05/2002, 17h21

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