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

Merise Discussion :

Exercice basique modelisation aide


Sujet :

Merise

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 35
    Points : 23
    Points
    23
    Par défaut Exercice basique modelisation aide
    Bonjour !!

    Je dois modéliser ces 2 situations. Entités relations

    (1) Les informations sur les personnes, nom, prénom, téléphone, fax et adresse complète, sont utilisées pour envoyer les colis.
    (2) L'adresse de livraison peut être différente de l'adresse de facturation.

    L'exercice 2 est la suite du 1.

    Est ce que vous pourriez m'aider svp?

    Je ne saisis pas.!! J dois faire entité relation
    Mici, Elea

  2. #2
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonsoir Eleanore,


    Si l’adresse de facturation et l’adresse de livraison peuvent être différentes pour une personne, on est en droit d’en déduire que si ces adresses appartiennent à cette personne, alors c’est que cette personne a plus d’une adresse...

    Autrement dit, si une personne peut avoir plus d'une adresse, un début de modélisation correspond à ceci :


    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 35
    Points : 23
    Points
    23
    Par défaut
    Exercice1 : Les informations sur les personnes, nom, prenom, téléphone, fax et adresse complete, sont utilisées pour envoyer les colis.

    colis -1,n ----- est envoyé ------- 1,1 adresse 1,1 --------- habite --------- 1,n client
    id_colis code_postal id_client
    ville nom
    rue prenom
    telephone
    fax

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 35
    Points : 23
    Points
    23
    Par défaut Comme ça? :)
    Comme ça?

  5. #5
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonsoir Eleanore,


    Citation Envoyé par EleanoreDes Voir le message
    Comme ça?
    Ben non...

    1) Vous avez défini ainsi l’association entre COLIS et ADRESSE :

    [COLIS]--1,N--------(Est envoyé)--------1,1--[ADRESSE]

    Ce qui se lit :

    — Au moins un colis et au plus plusieurs sont envoyés à une adresse donnée, et seulement à cette adresse ;

    — A une adresse donnée on envoie un et un seul colis.

    Il faut donc permuter les cardinalités :

    [COLIS]--1,1--------(Est envoyé)--------0,N--[ADRESSE]

    Ce qui se lit :

    — Un colis donné est envoyé à une adresse donnée, et seulement à cette adresse ;

    — A une adresse donnée on peut recevoir plusieurs colis.

    MCD




    2) L’entité-type COLIS n’est pas porteuse des attributs déjà définis dans les autres entités-types (ce que semble pourtant suggérer votre représentation). Disons que des attributs tels que la date d’expédition du colis suffisent.

    Pour fabriquer l’étiquette figurant sur le colis, d’après le MCD on a tous les éléments qu’il faut.

    Pour s’en convaincre, il suffit de voir à quoi correspondent le MLD et le code SQL de description des tables :

    MLD :





    Code SQL

    TABLE PERSONNE
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE PERSONNE 
    (
       PersonneId           Int                  Not null,
       PersonneNom          Varchar(64)          Not null,
       PersonnePrenom       Varchar(64)          Not null,
       Telephone            Varchar(64)          Not null,
       Fax                  Varchar(64)          Not null DEFAULT '',
       CONSTRAINT PERSONNE_PK PRIMARY KEY (PersonneId)
    ) ;

    TABLE ADRESSE
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE TABLE ADRESSE 
    (
       PersonneId           Int                  Not null,
       AddresseId           Int                  Not null,
       AdrLigne1            Varchar(64)          Not null,
       AdrLigne2            Varchar(64)          Not null,
       AdrLigne3            Varchar(64)          Not null DEFAULT '',
       AdrVille             Varchar(64)          Not null,
       CodePostal           Char(5)              Not null,
       CONSTRAINT ADRESSE_PK PRIMARY KEY (PersonneId, AddresseId),
       CONSTRAINT ADRESSE_PERSONNE_FK FOREIGN KEY (PersonneId) REFERENCES PERSONNE
    ) ;

    TABLE COLIS
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE COLIS 
    (
       ColisId              Int                  Not null,
       PersonneId           Int                  Not null,
       AddresseId           Int                  Not null,
       DateExpedition       Datetime             Not null,
       CONSTRAINT COLIS_PK PRIMARY KEY (ColisId),
       CONSTRAINT COLIS_ADRESSE_FK FOREIGN KEY (PersonneId, AddresseId) REFERENCES ADRESSE
    ) ;

    Un début de jeu d’essai :


    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    INSERT INTO PERSONNE (PersonneId, PersonneNom, PersonnePrenom, Telephone) VALUES (1, 'Naudin', 'Fernand', 'ODE8400') ;
    INSERT INTO PERSONNE (PersonneId, PersonneNom, PersonnePrenom, Telephone, FAX) VALUES (2, 'Volfoni', 'Raoul', 'BAL0000', 'BAL0001') ;
    INSERT INTO PERSONNE (PersonneId, PersonneNom, PersonnePrenom, Telephone, FAX) VALUES (3, 'Volfoni', 'Paul', 'BAL0000', 'BAL0002') ;
     
    INSERT INTO ADRESSE (PersonneId, AddresseId, AdrLigne1, AdrLigne2, AdrVille, CodePostal) VALUES (1, 1, 'Fernand Naudin', '1, rue Developpez', 'Yadupour', '99744') ;
    INSERT INTO ADRESSE (PersonneId, AddresseId, AdrLigne1, AdrLigne2, AdrVille, CodePostal) VALUES (1, 2, 'Fernand Naudin', '2, rue montante', 'Montauban', '82000') ;
    INSERT INTO ADRESSE (PersonneId, AddresseId, AdrLigne1, AdrLigne2, AdrVille, CodePostal) VALUES (2, 1, 'MM. Volfoni', 'La péniche', 'Ménilmuche', '75020') ;
    INSERT INTO ADRESSE (PersonneId, AddresseId, AdrLigne1, AdrLigne2, AdrVille, CodePostal) VALUES (3, 1, 'MM. Volfoni', 'The jus de pomme', 'Volfoville', '78999') ;
     
    INSERT INTO COLIS (ColisId, PersonneId, AddresseId, DateExpedition) VALUES (1, 1, 1, '2014-02-20') ;
    INSERT INTO COLIS (ColisId, PersonneId, AddresseId, DateExpedition) VALUES (2, 2, 1, '2014-02-17') ;
    INSERT INTO COLIS (ColisId, PersonneId, AddresseId, DateExpedition) VALUES (3, 3, 1, '2014-02-21') ;

    Lister les colis livrés :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT ColisId, AdrLigne1, AdrLigne2, AdrLigne3, CodePostal, AdrVille, Telephone, FAX
    FROM   COLIS AS x 
                      INNER JOIN ADRESSE AS y ON x.PersonneId = y.PersonneId AND x.AddresseId = y.AddresseId
                      INNER JOIN PERSONNE AS z ON y.PersonneId = z.PersonneId ;

    =>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ColisId    AdrLigne1         AdrLigne2          AdrLigne3    CodePostal    AdrVille    Telephone    FAX
    -------    --------------    -----------------  ---------    ----------    ----------  ---------    -------
    1          Fernand Naudin    1, rue Developpez               99744         Yadupour    ODE8400
    2          MM. Volfoni       La péniche                      75020         Ménilmuche  BAL0000      BAL0001
    3          MM. Volfoni       The jus de pomme                78999         Volfoville  BAL0000      BAL0002

    Les idées se mettent-elles en place ? ^^
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 35
    Points : 23
    Points
    23
    Par défaut
    Bonjouuuuur. Oh merci beaucoup, j'y vois plus clair avec les cardinalités. Je vois où sont mes erreurs. Pour la création des tables ça me dépasse, j'avoue lol.

    Pour la question 1, voilà les informations que j'ai.
    Question 1
    Ce n'est pas une erreur de mettre l'adresse dans l'entité client si le client n'a qu'une seule adresse. Dans ce cas, il faut vérifier que tous les attributs qui composent l'adresse dépendent bien de l'identifiant de l'entité client. Par exemple, la rue, le numéro et le code postal dépendent du client, mais le nom de la ville dépend du code postal, donc pas du client.

    Je je suis obligé d'écrire la ville dans l'entité client. Donc je dois créer une entité ville à relier au code postal? Je ne comprends pas. Svp, que faire?

    Miiiiciiiii

    Elea

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 35
    Points : 23
    Points
    23
    Par défaut
    (1) Les informations sur les personnes, nom, prénom, téléphone, fax et adresse complète, sont utilisées pour envoyer les colis.
    (2) L'adresse de livraison peut être différente de l'adresse de facturation.
    (3) Une personne peut avoir plusieurs adresses de livraison.

    Je ne comprends pas.
    L'attribut ville dépend du code postal, et non pas de l'entité client. Il faut créer une entité ville? Ou code postal?

    Comment dire qu'une adresse de facturation est différente d'une adresse de livraison?
    Ca fait des jours que je suis là-desus, je trouve la réponse dans aucun livre.

  8. #8
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonsoir Eleanore,


    Citation Envoyé par EleanoreDes Voir le message
    Pour la création des tables ça me dépasse
    Retenez quand même que c’est là que l’essentiel se joue... C’est comme faire le plan d’une maison c’est bien, c’est nécessaire, mais la construire, faire qu’elle soit robuste, c’est une autre affaire où l’on ne doit pas être dépassé, sinon : boum ! (j’ai vu ça dans le monde de l’entreprise)...


    Citation Envoyé par EleanoreDes Voir le message
    Ce n'est pas une erreur de mettre l'adresse dans l'entité client si le client n'a qu'une seule adresse.
    Si c’est une règle de gestion qui vous a été imposée dans le cadre d’un exercice, je suis d’accord (mais attention, dans le monde réel, les gens ne sont pas contraints à avoir une seule adresse...)


    Citation Envoyé par EleanoreDes Voir le message
    Par exemple, la rue, le numéro et le code postal dépendent du client, mais le nom de la ville dépend du code postal, donc pas du client.
    Pour un même code postal on peut avoir plusieurs villes ou villages (en France en tout cas)...






    Citation Envoyé par EleanoreDes Voir le message
    je suis obligé d'écrire la ville dans l'entité client
    Et comme pour une ville il peut y avoir plusieurs codes postaux, vous pouvez faire comme j’ai fait. Il y a plus économique en termes d’encombrement, mais réfléchissez déjà à cela...


    Citation Envoyé par EleanoreDes Voir le message
    L'attribut ville dépend du code postal
    On vient de voir que non (tout du moins en France).


    Citation Envoyé par EleanoreDes Voir le message
    Comment dire qu'une adresse de facturation est différente d'une adresse de livraison?
    Il faut ajouter une association FACTURER entre ADRESSE et COLIS. Si par ailleurs c’est la même personne qui est livrée et facturée, et si les adresses de livraison et de facturation peuvent être différentes, alors cette personne a plus d’une adresse.


    MCD




    MLD





    Code SQL

    TABLE PERSONNE
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE PERSONNE 
    (
       PersonneId           Int                  Not null,
       PersonneNom          Varchar(64)          Not null,
       PersonnePrenom       Varchar(64)          Not null,
       Telephone            Varchar(64)          Not null,
       Fax                  Varchar(64)          Not null DEFAULT '',
       CONSTRAINT PERSONNE_PK PRIMARY KEY (PersonneId)
    ) ;

    TABLE ADRESSE
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE TABLE ADRESSE 
    (
       PersonneId           Int                  Not null,
       AddresseId           Int                  Not null,
       AdrLigne1            Varchar(64)          Not null,
       AdrLigne2            Varchar(64)          Not null,
       AdrLigne3            Varchar(64)          Not null DEFAULT '',
       AdrVille             Varchar(64)          Not null,
       CodePostal           Char(5)              Not null,
       CONSTRAINT ADRESSE_PK PRIMARY KEY (PersonneId, AddresseId),
       CONSTRAINT ADRESSE_PERSONNE_FK FOREIGN KEY (PersonneId) REFERENCES PERSONNE
    ) ;

    TABLE COLIS
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     CREATE TABLE COLIS 
    (
       PersonneId           Int                  Not null,
       ColisId              Int                  Not null,
       AddresseLivrId       Int                  Not null,
       AddresseFactId       Int                  Not null,
       DateExpedition       Datetime             Not null,
       CONSTRAINT COLIS_PK PRIMARY KEY (PersonneId, ColisId),
       CONSTRAINT COLIS_ADRESSE_LIVR_FK FOREIGN KEY (PersonneId, AddresseLivrId) REFERENCES ADRESSE,
       CONSTRAINT COLIS_ADRESSE_FACT_FK FOREIGN KEY (PersonneId, AddresseFactId) REFERENCES ADRESSE
    ) ;

    Un début de jeu d’essai :


    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    INSERT INTO PERSONNE (PersonneId, PersonneNom, PersonnePrenom, Telephone) VALUES (1, 'Naudin', 'Fernand', 'ODE8400') ;
    INSERT INTO PERSONNE (PersonneId, PersonneNom, PersonnePrenom, Telephone, FAX) VALUES (2, 'Volfoni', 'Raoul', 'BAL0000', 'BAL0001') ;
    INSERT INTO PERSONNE (PersonneId, PersonneNom, PersonnePrenom, Telephone, FAX) VALUES (3, 'Volfoni', 'Paul', 'BAL0000', 'BAL0002') ;
     
    INSERT INTO ADRESSE (PersonneId, AddresseId, AdrLigne1, AdrLigne2, AdrVille, CodePostal) VALUES (1, 1, 'Fernand Naudin', '1, rue Developpez', 'Yadupour', '99744') ;
    INSERT INTO ADRESSE (PersonneId, AddresseId, AdrLigne1, AdrLigne2, AdrVille, CodePostal) VALUES (1, 2, 'Fernand Naudin', '2, rue montante', 'Montauban', '82000') ;
    INSERT INTO ADRESSE (PersonneId, AddresseId, AdrLigne1, AdrLigne2, AdrVille, CodePostal) VALUES (2, 1, 'MM. Volfoni', 'La péniche', 'Ménilmuche', '75020') ;
    INSERT INTO ADRESSE (PersonneId, AddresseId, AdrLigne1, AdrLigne2, AdrVille, CodePostal) VALUES (3, 1, 'MM. Volfoni', 'The jus de pomme', 'Volfoville', '78999') ;
     
    INSERT INTO COLIS (PersonneId, ColisId, AddresseLivrId, AddresseFactId, DateExpedition) VALUES (1, 1, 1, 2, '2014-02-20') ;
    INSERT INTO COLIS (PersonneId, ColisId, AddresseLivrId, AddresseFactId, DateExpedition) VALUES (2, 2, 1, 1, '2014-02-17') ;
    INSERT INTO COLIS (PersonneId, ColisId, AddresseLivrId, AddresseFactId, DateExpedition) VALUES (3, 3, 1, 1, '2014-02-21') ;

    Lister les colis livrés et facturés :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT 'Livraison', AdrLigne1, AdrLigne2, AdrLigne3, CodePostal, AdrVille, Telephone, FAX
    FROM   COLIS AS x 
                      INNER JOIN ADRESSE AS y ON x.PersonneId = y.PersonneId AND x.AddresseLivrId = y.AddresseId
                      INNER JOIN PERSONNE AS z ON y.PersonneId = z.PersonneId 
    UNION 
    SELECT 'Facturation', AdrLigne1, AdrLigne2, AdrLigne3, CodePostal, AdrVille, Telephone, FAX
    FROM   COLIS AS x 
                      INNER JOIN ADRESSE AS y ON x.PersonneId = y.PersonneId AND x.AddresseFactId = y.AddresseId
                      INNER JOIN PERSONNE AS z ON y.PersonneId = z.PersonneId ;

    =>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
                  AdrLigne1         AdrLigne2         AdrLigne3  CodePostal  AdrVille     Telephone  FAX
    -----------   --------------    ---------------   ---------  ----------  ----------   ---------  -------
    Facturation   Fernand Naudin    2, rue montante              82000       Montauban    ODE8400
    Facturation   MM. Volfoni       La péniche                   75020       Ménilmuche   BAL0000    BAL0001
    Facturation   MM. Volfoni       The jus de pomme             78999       Volfoville   BAL0000    BAL0002
    Livraison     Fernand Naudin    1, rue Developpez            99744       Yadupour     ODE8400 
    Livraison     MM. Volfoni       La péniche                   75020       Ménilmuche   BAL0000    BAL0001
    Livraison     MM. Volfoni       The jus de pomme             78999       Volfoville   BAL0000    BAL0002
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 35
    Points : 23
    Points
    23
    Par défaut
    Bonjouuur. Ha heu, ben ok, merci d'avoir pris la peine de me répondre

Discussions similaires

  1. Exercice demande d'aide
    Par zarkos dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 14/06/2015, 22h20
  2. Réponses: 0
    Dernier message: 16/06/2014, 17h09
  3. Petit exercice. Besoin d'aide
    Par DBA_OCP dans le forum C
    Réponses: 12
    Dernier message: 21/03/2008, 04h19
  4. Réponses: 7
    Dernier message: 05/09/2006, 08h56

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