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

Modélisation Discussion :

Ecrire le MCD sur une relation [AC-2010]


Sujet :

Modélisation

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mai 2012
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2012
    Messages : 173
    Points : 80
    Points
    80
    Par défaut Ecrire le MCD sur une relation
    Bonjour,

    J'ai un doute sur la façon d'écrire cette relation en table :

    Un client payeur peut offrir un ou plusieurs abonnements à un ou plusieurs client.

    C'est à dire que celui qui paie un magazine peut l'offrir à lui-même ou à toute sa famille un ou plusieurs abonnements.

    Ce n'est que du 1,n, il faudrait donc créer une table intermédiaire qui récupère les clés des 3 tables ? Ou alors y-t'il une autre façon de créer cette relation ?

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 739
    Points : 57 513
    Points
    57 513
    Billets dans le blog
    42
    Par défaut
    bonjour,

    Supposons la table Offrir(#idClientPayeur, #idClient, #idAbonnement), clé primaire sur les 3 champs.

    Un client payeur peut offrir à un même client plusieurs abonnements:
    idClientPayeur    idClient    idAbonnement
        c1               c2           a1
        c1               c2           a2
        c1               c2           a3
    Un client payeur peut offrir un même abonnement à plusieurs clients:
    idClientPayeur    idClient    idAbonnement
        c1               c2           a1
        c1               c3           a1
        c1               c4           a1
    Pour un abonnement et un client donné, il peut y avoir plusieurs clients payeurs:
    idClientPayeur    idClient    idAbonnement
        c6               c5           a9
        c7               c5           a9
        c8               c5           a9
    Si au moins un des 3 cas précédents est impossible, alors il faut que tu reviennes, le schéma de départ n'est pas bon

  3. #3
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mai 2012
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2012
    Messages : 173
    Points : 80
    Points
    80
    Par défaut
    Bonjour f-leb,

    Merci pour ta réponse.

    La dernière possibilité est surement impossible à arriver. Je ne vois pas recevoir le même n abonnement par différentes personnes.

    un moment donné, j'ai pensé mettre la clé étrangère du payeur dans la table client car un client a un et un seul payeur, mais il peut avoir n magazines de différents payeurs par contre.

    la table avec les 3 clés étrangères est donc impossible.

    un payeur a 1 ou n client
    un client peut avoir un ou plusieurs plusieurs payeur mais pas sur le même magazine
    un payeur peut acheter pour lui-même, 1 ou n abonnement

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 739
    Points : 57 513
    Points
    57 513
    Billets dans le blog
    42
    Par défaut
    bonjour,

    s'il n'y a que le dernier cas à éviter, il suffit de mettre la clé primaire uniquement sur le couple (idclient, idabonnement):

    Offrir(#idClientPayeur, #idClient, #idAbonnement)
    idClientPayeur    idClient    idAbonnement
        c6               c5           a9
        c7               c5           a9 <-- doublon impossible sur (idClient, idAbonnement)
    
    les deux premiers cas restant possibles.

  5. #5
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Bonjour ambact et f-leb.
    Sans vouloir répondre à la place de f-leb ,j'ai un peu suivi l'activité d'ambact sur une discussion vba portant sur le mailing.ici
    ambact ayant pris la suite sur une base mal conçue ,tu vas te trouver dans l'impossibilité de faire évoluer cette base .
    Et ici, tu ne donnes qu'une (très) petite partie des infos .
    Je propose ici un modèle de départ qui me semble adapté à ton activité à travers ce que j'ai compris dans l'autre post.

    Est-ce que cela convient ?
    A+
    Images attachées Images attachées  

  6. #6
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 739
    Points : 57 513
    Points
    57 513
    Billets dans le blog
    42
    Par défaut
    Bonjour,

    bon, je n'ai pas eu le loisir de lire l'autre discussion, 3 pages et 50 messages

    Citation Envoyé par ambact Voir le message
    C'est à dire que celui qui paie un magazine peut l'offrir à lui-même ou à toute sa famille un ou plusieurs abonnements
    Citation Envoyé par ambact Voir le message
    un payeur peut acheter pour lui-même, 1 ou n abonnement
    Le fait d'avoir une table Client et une table Payeur ne va pas faciliter les choses si le payeur peut aussi être le client, non ?

  7. #7
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Bonsoir f_leb.
    Dans la table payeur ,si on dédit le 1 (p.e) ,nom = vide ou lui memme, cela doit résoudre le problème .
    En ce qui concerne les familles ,j'ai scindé en 2 tables ,plus une table de jonction.
    A+
    Images attachées Images attachées  

  8. #8
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mai 2012
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2012
    Messages : 173
    Points : 80
    Points
    80
    Par défaut
    Bonsoir a vous !

    Je vois que la discussion est suivi.

    Alors oui, tout d'abord, il est vrai que je travaille actuellement sur une base de donnée qui n'a pas été monté dans le sens que je pense mais a force de travailler dessus, je comprend pourquoi ca a été écrit comme ca.

    Les données des commandes, se transfèrent de base en base de données. Le moyen le plus simple a été de créer une seule table des commandes, et une ligne de données est écrite par titre de magazine et non par client, ce qui signifie qu'il y autant de fiche par magazine et si un client prend 10 magazines, il faut créer 10 lignes et on récupère a chaque fois les infos du client. Pour moi, la meilleure solution a été de proposer une fiche par client, 1 ligne créée pour 10 magazines.

    Il faut donc créer plusieurs tables qui fassent les relations. Le problème est que lors de transfert pour traiter les commandes, ça fait autant de table qu'il faut transférer pour ne pas perdre les liens entre elles. Ca risque de porter a confusion a force.

    J'essaie de proposer une nouvelle base de données simple a l'usage.
    Celle de 3 tables avec 1 table qui fait le lien peut être interressant. Je vais tester les différents modèles pour voir ce que ca peut donner.

  9. #9
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Bonjour ambact.
    Si çà t'interesses ,j'ai fait une base suivant l'image proposée plus haut.
    Le plus simple (selon moi) , c'est un formulaire et un sous formulaire .
    Donc 1 table Commande-detail.
    Je suis en train de finaliser avec outlook.
    Je peut eventuelement t'envoyer cette base.
    ci-joint le form (sans effort esthetique !)
    Cdlt

    ps:certains champs (publication) sont grisés car désactivés ,et on ne les voit pas bien sur l'image
    Images attachées Images attachées  

  10. #10
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mai 2012
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2012
    Messages : 173
    Points : 80
    Points
    80
    Par défaut
    Bonjour,

    J'ai repensé au lien entre les tables et je veux m'assurer qu'une table intermédiaire est obligatoire et contiendrait donc les 3 clés des 3 tables.

    Voici les relations à écrire sur 3 tables différentes
    Table CLIENT_PAYEUR
    Table CLIENT_LIVREUR
    Table PUBLICATION

    avec une table qui regroupe les 3 tables TABLE COMMANDE

    - un payeur peut offrir un ou plusieurs abonnements à un ou plusieurs clients et à lui-même.
    -un client peut avoir un ou plusieurs abonnements de un ou plusieurs client payeur
    - une publication peut être offrir par un ou plusieurs payeur pour un ou plusieurs client livreur.

    En sachant que le plus important ensuite, sont les données du client livré pour les éditeurs, donc il faut pouvoir lister la liste des publications à livrer à l'adresse du client qui reçoit et pas celui qui paie (sauf s'il achète pour lui-même)

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

Discussions similaires

  1. Ecrire du texte sur une fenêtre de Jeu vidéo (OSD)
    Par zenway dans le forum DirectX
    Réponses: 7
    Dernier message: 07/03/2009, 14h06
  2. Question sur une relation ternaire dans un MCD
    Par sylsau dans le forum Schéma
    Réponses: 5
    Dernier message: 05/03/2006, 20h00
  3. Ecrire du texte sur une Overlay Surface
    Par deakuk dans le forum DirectX
    Réponses: 1
    Dernier message: 17/02/2006, 13h52
  4. [VMR9][D3D9]ecrire un texte sur une surface
    Par drizztfr dans le forum DirectX
    Réponses: 2
    Dernier message: 13/11/2003, 15h06

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