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 :

Comment représenter une règle métier dans un MCD ?


Sujet :

Schéma

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Comment représenter une règle métier dans un MCD ?
    Hello,

    Je suis un peu calé au niveau modélisation dans un projet. C'est visiblement très simple (je n'ai, sur cette partie du schéma, que 4 tables), mais je suis un peu rouillé et je ne parviens pas à trouver de solution satisfaisante.

    Voici comment est structuré le schema actuel :

    J'ai tout d'abord une table clients. Chaque client à X contacts, j'ai donc une table contacts qui contient une clé étrangère client_id. Enfin, j'ai des projets. chaque projet est lié à un client, par l'intermédiaire d'un et un seul contact. J'ai donc une table projet qui contient une clé étrangère contact_id. Bref, du projet, on trouve directement le contact, puis le nom du client en suivant la relation de contact vers clients.

    Le problème est que je cherche à permettre de créer, pour chaque client, de 0 à N "groupes de projets". Chaque projet pourra être dans 0 ou 1 groupe de projet.

    La solution que j'ai sur ma feuille actuellement est la suivante : Ajouter une table projet_groups, qui contient une clé étrangère client_id. Dans la table projet, j'aurais aussi une clé étrangère projet_group_id qui peux etre NULL (le projet n'appartient à aucun groupe).

    Le problème de ce schéma est le risque d'incohérence : vu que les tables contacts et project_groups sont "en parralèle" sur la relation qui relie projet à client, on pourrait se retrouver avec une incohérence entre le client_id de contact et le client_id de project_groups. Je peux bien sur mettre une série de verrous au niveau applicatif, mais j'aurais voulu garder une DB aussi clean et peu redondante que possible.

    Comment me conseilleriez vous de structurer ceci ?
    J'espère avoir été un minimum clair, excusez mon ignirance et mon manque de vocabulaire dans le domaine de la modélisation, ce n'est absolument pas mon boulot principal.

    Merci d'avance,

    Nicolas

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 81
    Points : 102
    Points
    102
    Par défaut
    Je ne vois pas bien l'incohérence si tu mets id_client dans contacts et dans groupe_projet.

    Néamoins, est-ce qu'il peut y avoir un client qui appartient à un groupe de projet X mais qui n'a pas de projets reliés à ce groupe de projet X ?

    Si la réponse est non, c'est à dire qu'un client appartenant à un groupe de projet a forcement un projet relié à ce groupe, alors tu peux supprimer la relation entre clients et groupe de projet vu que tu peux la retrouver en passant par contact puis par projet.

    cordialement

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Bonjour !

    Grand merci pour ta réponse.

    Oui, on peux imaginer créer, pour un client X, un groupe de projets et dans un premier temps laisser les projets hors de tout groupe, puis choisir de place les projet A B C dans le groupe de ce client.

    L'incohérence pourrait apparaitre si un projet se trouvait lié à un contact d'un client X, mais faisait par contre partie d'un groupe de projets qui appartient lui au client Y. Ceci est du au fait que (quand un projet est placé dans un groupe de projet), il y à deux chemins possible entre projet et client : en passant par la table contacts et en passant par la table projet_groupes.

    Merci encore,

    Nico

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 81
    Points : 102
    Points
    102
    Par défaut
    d'accord.
    Et pour ne pas avoir l'incohérence, il faur rajouter un contrôl au niveau applicatif.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Merci !

    C'est ce que je pensais faire, mais vu ma nullité chronique dans le domaine des DB je me demandais si il n'y avait pas un moyen clean d'intégrer ca dans mon schéma.

    Merci encore.

Discussions similaires

  1. Comment créer une règle dans Sonar
    Par catmary dans le forum Intégration Continue
    Réponses: 7
    Dernier message: 09/07/2014, 10h34
  2. comment exprimer une règle de gestion au niveau du MCD?
    Par spring.time dans le forum Merise
    Réponses: 11
    Dernier message: 14/06/2013, 17h36
  3. Réponses: 3
    Dernier message: 08/11/2010, 18h37
  4. Comment représenter une contrainte dans une relation ?
    Par ecervetti dans le forum Langage SQL
    Réponses: 11
    Dernier message: 16/02/2009, 17h35
  5. Réponses: 7
    Dernier message: 21/03/2006, 14h01

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