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 :

Gestion des droits d'une personne appartenant à un groupe [MCD]


Sujet :

Schéma

  1. #1
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Gestion des droits d'une personne appartenant à un groupe
    Bonjour, j'ai beaucoup cherché et je souhaiterais savoir s'il est possible de modéliser ce que je vous explique ci-après avec des contraintes d'inclusion.

    Je souhaite gérer les droits d’utilisateurs et ceux des groupes d’utilisateurs dans une application qui permet de voter, si on en a le droit, les dates d’une réunion pour que celle-ci se réalise au meilleur moment.

    J’ai simplifié ma base de données pour vous faire comprendre plus facilement mon problème.

    Le droit de vote est donné si la personne est inscrite à la réunion.



    Une personne peut voter pour la date d’une réunion uniquement si cette personne est inscrite à cette réunion. J’ai supposé faire une contrainte d’inclusion. (je ne sais pas si elle est bien modélisée sur le mcd)

    Mais ce qui n'est pas modélisé :
    je souhaite également gérer les groupes de personnes : Une personne appartient à un groupe, elle peut également voter pour la date d’une réunion si son groupe est inscrit à la réunion en question.

    C’est plus simple et moins lourd de gérer les groupes de personnes dans une application mais je dois quand même scinder en deux les droits pour une personne et pour un groupe car parfois je peux inscrire des personnes sans qu’elles appartiennent à un groupe.

    Comment modéliser cette contrainte liée à l’inscription d’un groupe à une réunion pour donner le droit aux personnes appartenant à ce groupe de pouvoir voter pour cette réunion ?

    Merci d'avance

  2. #2
    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 Zkvm45,

    Très intéressant !...

    Il me semble que ce cas montre que tout n'est pas, forcément, modélisable simplement.

    Suggestion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Reunion -0,n---[Inscrire]---0,n----------------- Key -0,1---[Identifier]---(1,1)- Personne
                       |                              |                                  |
                      0,n                             |                                 0,n
                       |                              |                                  |
                       |                              |                             [Appartenir]--
                       |                              |                                  |       |
                       |                              |                                 1,n      |
                       |                              |                                  |       |
                       |                              ----0,1---[Identifier]---(1,1)- Groupe     |
                       |                                                                         |
                   [Proposer]---0,n---------------------------------------------------------------
                       |
                      0,n
                       |
                     Date
    ce qui devrait donner :
    Reunion(IdReunion, ...)
    Key(IdKey, ...)
    Personne(IdKey, ...)
    Groupe(IdKey, ...)
    Date(Date, ...)

    Inscription(IdInscription, #IdReunion, #IdKey (personne ou groupe), ...) ==> {#IdReunion, #IdKey} unique
    GroupePersonne(#IdKeyGroupe, #IdKeyPersonne, ...)

    Proposition(#IdInscription, #IdKey (personne), #Date, ...) ==> c'est toujours une personne qui fait une proposition de date ; le contrôle de l'appartenance de cette personne non inscrite à un groupe inscrit peut s'effectuer par un trigger

    Citation Envoyé par Zkvm45
    Le droit de vote est donné si la personne est inscrite à la réunion .../...
    .../... si son groupe est inscrit à la réunion en question .../...
    ==> résolu par Key (distributeur d'identifiant).

    Citation Envoyé par Zkvm45
    Une personne appartient à un groupe, elle peut également voter pour la date d’une réunion si son groupe est inscrit à la réunion en question.
    ==> résolu par le trigger.


    A voir... et surtout à tester...
    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 !

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Ce genre de truc n'est généralement solvable que par des triggers ou des tests dans l'application.

    Mais revenons aux règles de gestion et modélisons progressivement...

    1) Une personne peut appartenir à plusieurs groupes et un groupe possède de une à plusieurs personnes.

    personne -0,n----appartenir----1,n- groupe

    2) Une personne peut être inscrite à plusieurs réunions et une réunion peut voir inscrire plusieurs personnes.

    personne -0,n----inscrire----0,n- reunion

    3) Une réunion peut proposer plusieurs dates et une date peut être proposée pour plusieurs réunions.

    reunion -0,n----proposer----0,n- date

    Nota : cardinalités différentes de votre MCD !

    4) Une personne inscrite à une réunion peut voter pour une date proposée de réunion et une date proposée de réunion peut avoir le vote de plusieurs personnes.

    Là, on transforme les associations 2 et 3 en entités associatives :

    personne -0,n----inscrire----(1,1)- inscription_reunion -(1,1)----concerner----0,n- reunion

    reunion -0,n----proposer----(1,1)- proposition_date_reunion -(1,1)----concerner----0,n- date

    Les cardinalités entre parenthèses indiquent une identification relative, ce qui donnera une clé primaire composée de deux clés étrangères, comme dans la table associative qui aurait été issue de l'association de départ.

    On peut maintenant associer les deux entités associatives :
    inscription_reunion -0,1----voter----0,n- proposition_date_reunion

    Mais ce qui n'est pas modélisé :
    je souhaite également gérer les groupes de personnes : Une personne appartient à un groupe, elle peut également voter pour la date d’une réunion si son groupe est inscrit à la réunion en question.
    Même principe : commençons par modéliser l'inscription du groupe à une réunion.

    5) un groupe peut être inscrit à plusieurs réunions et une réunion peut voir inscrire plusieurs groupes.

    groupe -0,n----inscrire----0,n- reunion

    6) Une personne appartenant à un groupe inscrit à une réunion peut voter pour une date proposée pour la réunion et une date proposée pour une réunion peut avoir le vote d'une personne appartenant à un groupe inscrit à la réunion.

    Là par contre, je pense qu'il faut une contrainte d'inclusion reliant le groupe inscrit, la personne appartenant au groupe et le vote. Et donc il faudra en BDD un trigger ou peut-être une contrainte CHECK.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci pour vos réponses,

    Pour Richard_35 :

    Je ne comprends pas les liaisons entre les relations : inscrire --- proposer et proposer --- appartenir. On m'a toujours expliqué qu'une relation s'effectuait entre des entités, pouvez vous m'expliquer ?

    Pour l'entité Key, le principe m'a l'air bien mais n'est-ce pas plus simple au final de la décomposer en 2 relations :
    personne -0,n----inscrire_personne----0,n- réunion
    groupe -0,n----inscrire_groupe----0,n- réunion
    Je n'ai pas compris l'objectif de les réunir en une seule table Key

    Pour CinePhil :

    Merci pour la reprise à zero, j'ai simplifié mon MCD pour me focaliser uniquement sur la gestion du groupe mais dans le MCD complet je gère bien la gestion de réunions et suggestion de dates/lieux.

    Je pense créer la relation :

    groupe -0,n----inscrire----0,n- réunion
    avec la contrainte d'inclusion qui sera gérée par trigger.

    Merci beaucoup

  5. #5
    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 Zkvm45,

    Citation Envoyé par Zkvm45
    On m'a toujours expliqué qu'une relation s'effectuait entre des entités, pouvez vous m'expliquer ?
    ==> c'est vrai. En l’occurrence, ces associations deviendraient des entités.


    Citation Envoyé par Zkvm45
    Pour l'entité Key, le principe m'a l'air bien mais n'est-ce pas plus simple au final de la décomposer en 2 relations :
    personne -0,n----inscrire_personne----0,n- réunion
    groupe -0,n----inscrire_groupe----0,n- réunion
    ==> ce schéma générera deux tables associatives :
    Inscription_personne(#IdPersonne, #IdReunion, ...)
    Inscription_groupe(#IdGroupe, #IdReunion, ...)
    Citation Envoyé par Zkvm45
    Je n'ai pas compris l'objectif de les réunir en une seule table Key
    ==> cela te permet de n'avoir qu'une seule table Inscription :
    Key(IdKey, ...)
    Personne(IdKey, ...)
    Groupe(IdKey, ...)
    Inscription(IdInscription, #IdReunion, #IdKey (personne ou groupe), ...) ==> {#IdReunion, #IdKey} unique
    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 !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Problème de gestion des droits sur une base ODBC (SQL Server)
    Par alexandre.g dans le forum Sécurité
    Réponses: 0
    Dernier message: 16/06/2014, 17h35
  2. Gestion des droits dans une appli
    Par koyot3 dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 25/10/2011, 10h27
  3. [MCD] Gestion des droits d'une application
    Par Tidus159 dans le forum Schéma
    Réponses: 6
    Dernier message: 18/03/2011, 14h05
  4. Gestion des droits dans une application Java
    Par Donaldo dans le forum Langage
    Réponses: 10
    Dernier message: 14/02/2008, 18h15

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