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 disposer les relations sur trois tables ?


Sujet :

Schéma

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 204
    Points : 79
    Points
    79
    Par défaut comment disposer les relations sur trois tables ?
    Bonjour,
    j'ai un souci sur la disposition des relations sur trois tables de mon MCD.
    En effet j'ai la table PRODUIT, CLIENT et DROIT.Dans la table droit, il existe plusieurs droits différents correspondant à la possibilité d'avoir les produits.
    Exemple:
    la relation c'est donne droit à voir tel produit.
    Droit D1---->Produit P1
    Droit D1---->Produit P2
    Droit D1---->Produit P3


    Droit D2---->Produit P1
    Droit D2---->Produit P4
    Droit D2---->Produit P3

    Droit D3---->Produit P2
    Droit D3---->Produit P4
    Droit D3---->Produit P5

    etc.
    un client a un droit lui permettant d'avoir accès à un ou plusieurs produits.

    J'aimerai savoir comment disposer les relations entre ces tables.
    Je vous remercie d'avance.

  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
    Bonjour,
    je te propose une modélisation à ton problème. j'ai crée 2 relations pour lier les tables : la relation Avoir_Droit qui modélise le fait qu'un client peut avoir plusieurs droit, et une deuxième relation Porter_Sur pour modéliser le lien entre les droits et les produits. Un droit peut porter sur +sieurs Produits.

    j'ai rajouté la table DATE pour garder l'historique de l'attribution des droits.

    Ci-joint le modèle (en image) et le code.
    Nom : Diag_Rep2.JPG
Affichages : 74
Taille : 36,2 Ko

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    /*==============================================================*/
    /* Table : CLIENT                                               */
    /*==============================================================*/
    create table CLIENT  (
       CODE_CLIENT          VARCHAR2(10)                    not null,
       NOM_CLIENT           VARCHAR2(40),
       PREOM_CLIENT         VARCHAR2(40),
       constraint PK_CLIENT primary key (CODE_CLIENT)
    );
    
    /*==============================================================*/
    /* Table : "DATE"                                               */
    /*==============================================================*/
    create table "DATE"  (
       "DATE"               DATE                            not null,
       constraint PK_DATE primary key ("DATE")
    );
    
    /*==============================================================*/
    /* Table : DROIT                                                */
    /*==============================================================*/
    create table DROIT  (
       CODE_DROIT           VARCHAR2(2)                     not null,
       DESCRIPTION          LONG,
       constraint PK_DROIT primary key (CODE_DROIT)
    );
    /*==============================================================*/
    /* Table : PRODUIT                                              */
    /*==============================================================*/
    create table PRODUIT  (
       CODE_PRODUIT         VARCHAR2(10)                    not null,
       LIBELLE_PRODUIT      LONG,
       constraint PK_PRODUIT primary key (CODE_PRODUIT)
    );
    /*==============================================================*/
    /* Table : AVOIR_DROIT                                          */
    /*==============================================================*/
    create table AVOIR_DROIT  (
       CODE_CLIENT          VARCHAR2(10)                    not null,
       CODE_DROIT           VARCHAR2(2)                     not null,
       "DATE"               DATE                            not null,
       constraint PK_AVOIR_DROIT primary key (CODE_CLIENT, CODE_DROIT, "DATE")
    );
    
    /*==============================================================*/
    /* Table : PORTER_SUR                                           */
    /*==============================================================*/
    create table PORTER_SUR  (
       CODE_DROIT           VARCHAR2(2)                     not null,
       CODE_PRODUIT         VARCHAR2(10)                    not null,
       "DATE"               DATE                            not null,
       constraint PK_PORTER_SUR primary key (CODE_DROIT, CODE_PRODUIT, "DATE")
    );
    j'espère que ça répond à ton problème.

    N'hesite pas à poser si ta des questions.
    a+

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 204
    Points : 79
    Points
    79
    Par défaut
    Merci de votre réponse,
    en effet cette représentation est convenable.Toutefois j'aimerai savoir s'il n'est pas possible qu'un client ait un droit unique (pas plusieurs) et que ce droit porte sur plusieurs produits ?
    Merci encore.

  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
    Citation Envoyé par opeo
    Toutefois j'aimerai savoir s'il n'est pas possible qu'un client ait un droit unique (pas plusieurs) et que ce droit porte sur plusieurs produits ?
    c'est selon les règles de gestion. si un client a qu'un seul droit (généralement ce n'est pas le cas) alors mets la cardinalité à 1,1 dans la relation Avoir_Droit et décomposes là en enlevant le lien avec la table DATE. ça devient une relation binaire de 1,1 vers 1,n.

    a+

  5. #5
    Membre averti Avatar de Soutou
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 328
    Points : 378
    Points
    378
    Par défaut
    Il me semble qu'il s'agit d'une relation ternaire entre Client, Droit et Produit. Il y a une contrainte d'unicité entre (client,produit) vers Droit qui exprime qu'un client et un produit donnés ne sont associés qu'à un seul droit.

    La relation au niveau logique donne AvoirDroit(client#,produit#,droit#), la clé primaire est soulignée, chaque colonne est aussi clé étrangère.
    ça te va?

  6. #6
    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
    Bonjour,

    Oui pourquoi pas.

    Citation Envoyé par opeo
    la relation c'est donne droit à voir tel produit.
    Droit D1---->Produit P1
    Droit D1---->Produit P2
    Droit D1---->Produit P3
    ....
    un client a un droit lui permettant d'avoir accès à un ou plusieurs produits.
    Ton ennoncé de départ m'a laissé comprendre qu'un droit donne lieu à un ou plusieurs produits et que les clients accèdent à ses produits via les droits qui leurs sont attribués...

    n'hésite pas à poser des questions.
    bonne journée et a+.

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

Discussions similaires

  1. Comment éviter les jointure sur plusieurs tables
    Par xavier81 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 06/02/2011, 16h12
  2. Réponses: 6
    Dernier message: 15/04/2010, 11h22
  3. Réponses: 0
    Dernier message: 08/04/2009, 02h55
  4. Réponses: 5
    Dernier message: 03/08/2006, 17h13
  5. Réponses: 2
    Dernier message: 18/08/2005, 13h42

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