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 :

Modelisation d'une entité Adresse [MCD]


Sujet :

Schéma

  1. #1
    Membre du Club
    Homme Profil pro
    informatique de gestion
    Inscrit en
    Janvier 2011
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : informatique de gestion

    Informations forums :
    Inscription : Janvier 2011
    Messages : 92
    Points : 67
    Points
    67
    Par défaut Modelisation d'une entité Adresse
    Bonjour
    Voici mon problème; j'ai plusieurs entités différentes et chacune d'entre elle possède une adresse.
    Mon souci est que j'aimerais créer une entité de type association possédant les attributs des différentes adresses.
    Mais je me pose la question de savoir si il n'est pas plus facile de mettre directement l'attribut adresse dans chacune de mes entités.
    Voici mon MCD

    Nom : Nouvelle image bitmap.jpg
Affichages : 2637
Taille : 27,3 Ko

    Merci d'avance
    PS: mes cardinalités sont de 1-1 que je corrigerais plus tard

  2. #2
    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 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    j'ai plusieurs entités différentes et chacune d'entre elle possède une adresse.
    D'après votre schéma, adresse est une association quaternaire entre les 4 "ENTITYs", ce qui entraînera la création d'une table associative dont la clé primaire sera composée des clés étrangères référençant chacune des 4 entitys.

    J'ai plutôt l'impression qu'il vous faudrait 4 associations :
    entity -1,1----posséder----0,n- adresse
    entity_1 -1,1----posséder----0,n---|

    À vous de déterminer les cardinalités qui vont bien.

    Si vous nous dites plus concrètement ce qui se cache derrière ces "entitys", nous pourrons mieux vous aider à modéliser correctement votre système.
    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 !

  3. #3
    Membre du Club
    Homme Profil pro
    informatique de gestion
    Inscrit en
    Janvier 2011
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : informatique de gestion

    Informations forums :
    Inscription : Janvier 2011
    Messages : 92
    Points : 67
    Points
    67
    Par défaut
    Merci pour ton post
    Pour mes entités il s'agit d'un garage, de ses franchises, de ses clients et de ses fournisseurs.
    Chacune d'entre elles possèdent une adresse donc je pensais en faire une association de type quaternaire ou alors garder l'attribut adresse dans chaque entité.
    Je voulais savoir la démarche la plus efficace à effectuer face à ce cas précis
    Nom : Nouvelle image bitmp.jpg
Affichages : 2282
Taille : 40,7 Ko
    Nom : Nouvelle image bitmap (2).jpg
Affichages : 2259
Taille : 27,3 Ko
    Merci

  4. #4
    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 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Et bien écrivons d'abord les règles de gestion et le MCD viendra tout seul.

    Un garage est situé à une adresse et une adresse peut situer un garage. Ça m'étonnerait qu'il y ait plusieurs garages à la même adresse.
    Une franchise est située à une adresse et une adresse peut situer une franchise. Idem.
    Un fourniseur est situé à une adresse et une adresse peut situer plusieurs fournisseurs. On pourrait même dire qu'un forunisseur peut avoir plusieurs adresses (physique, de facturation...).
    Un client est situé à une adresse et une adresse peut situer plusieurs clients. Idem que les fournisseurs.
    Une adresse est située dans une localité et une localité peut situer plusieurs adresses.
    Une localité est située dans un pays et un pays peut situer plusieurs localités.

    MCD :
    garage -1,1----situer----0,1- adresse -1,1----situer----0,n- ville -1,1----situer----0,n- pays
    franchise -1,1----situer----0,1----|
    fournisseur -1,1----situer----0,n--|
    client -1,1----situer----0,n----------|

    Ce qui donne les tables suivantes...
    te_pays_pay (pay_id, pay_code, pay_nom...)
    te_localite_loc (loc_id, loc_id_pays, loc_nom...)
    te_adresse_adr (adr_id, adr_id_localite, adr_rue, adr_code_postal...)
    te_garage_gar (gar_id, gar_id_adresse, gar_nom...)
    te_franchise_fch (fch_id, fch_id_adresse, fch_nom...)
    te_fournisseur_frn (frn_id, frn_id_adresse, frn_nom...)
    te_client_clt (clt_id, cld_id_adresse, clt_nom...)

    Demande toi aussi si une franchise n'est pas elle-même un garage, si un fournisseur ne peut pas être aussi un client et sont en fait deux sociétés...
    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 !

  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 906
    Points
    30 906
    Billets dans le blog
    16
    Par défaut
    Bonsoir,


    Un autre scénario possible...

    Si vous traitez des relations du seul garage Naudin avec les autres entités, le MCD suivant correspond à la généralisation de ces dernières :

    On met dans le pot commun (surtype) ENTITE les propriétés partagées par ces entités, et les propriétés non partagées sont représentées dans les sous-types correspondants :




    Si une entité-type peut être caractérisée par plus d’une adresse, on met en œuvre une entité-type (faible) en conséquence :





    Si vous avez à gérer plusieurs garages, il faudra ajouter GARAGE en temps que sous-type d’ENTITE et faire figurer ses relations avec les autres sous-types.
    (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
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    C'est ce que je propose dans cet exemple depuis des lustres...
    http://blog.developpez.com/exercices...n_de_personnes
    http://blog.developpez.com/exercices..._d_une_adresse

    Vous auriez pu chercher un peu !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  7. #7
    Membre du Club
    Homme Profil pro
    informatique de gestion
    Inscrit en
    Janvier 2011
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : informatique de gestion

    Informations forums :
    Inscription : Janvier 2011
    Messages : 92
    Points : 67
    Points
    67
    Par défaut
    Merci beaucoup pour vos éclaircissement pour mon problème ma solution irait plus vers le schéma proposé par fsmrel.
    Pourrais tu juste me dire quel est le logiciel que tu as utilisé pour modéliser ton exemple car avec le mien je n'arrive pas à modéliser l’héritage correctement.
    Merci

  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 906
    Points
    30 906
    Billets dans le blog
    16
    Par défaut
    Bonsoir,


    J’ai utilisé l'excellent DB-MAIN de Jean-Luc Hainaut (version 9.2b).


    Supposons que je crée une nouvelle entité-type ENTITY, devant être sous-type de CLIENT.

    J’ouvre la « Property box » de ENTITY, et clique sur le bouton orné de 3 petits points, correspondant à la case « supertypes ». Cela provoque l’ouverture de la fenêtre « Multiple choice dialog », j’y sélectionne CLIENT et fais « Add first ».



    Et l'héritage se produira quand j'aurais fait « OK » et cliqué dans le plan de travail.

    Sommes-nous en phase ?
    (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 du Club
    Homme Profil pro
    informatique de gestion
    Inscrit en
    Janvier 2011
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : informatique de gestion

    Informations forums :
    Inscription : Janvier 2011
    Messages : 92
    Points : 67
    Points
    67
    Par défaut
    Merci c'est aussi celui que j'utilise mais je ne savais pas comment le faire
    Je vous remercie tous pour vos infos
    Bonne journée

  10. #10
    Membre du Club
    Homme Profil pro
    informatique de gestion
    Inscrit en
    Janvier 2011
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : informatique de gestion

    Informations forums :
    Inscription : Janvier 2011
    Messages : 92
    Points : 67
    Points
    67
    Par défaut
    Bonsoir à tous
    Ayant un peu potassé le sujet, j'aurai encore quelques questions à poser.

    1. J'aimerai savoir si il s'agit bien d'une spécialisation c'est à dire que L’entité sous-type (client,franchise,fournisseur) hérite de toutes les propriétés de l’entité sur-type (adresse) y compris de son identifiant ce qui explique le fait de ne pas avoir de Id dans les entités sous-type?

    2. Si il est possible d'avoir les 2 types d'héritages ( spécialisation et généralisation ) dans un seul schéma?

    2.1 Si une entité peut faire partie d'une part dans une association d'héritage de type spécialisation et d'une autre part dans une association de type généralisation ?
    2.2 Si oui comment puis-je gérer le fait que dans ma spécialisation mon entité sous-type ne possède pas d'Id tandis que dans ma généralisation il me faut un Id??
    Merci d'avance

  11. #11
    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 906
    Points
    30 906
    Billets dans le blog
    16
    Par défaut
    Bonsoir shimomura22


    Citation Envoyé par shimomura22 Voir le message
    J'aimerai savoir si il s'agit bien d'une spécialisation c'est à dire que L’entité sous-type (client, franchise, fournisseur) hérite de toutes les propriétés de l’entité sur-type (adresse) y compris de son identifiant ce qui explique le fait de ne pas avoir de Id dans les entités sous-type?

    1) Revenons à la situation initiale.

    On est dans un contexte de spécialisation, chaque sous-type hérite conceptuellement du surtype, y-compris de l’identifiant. On peut aussi faire de la généralisation, en ajoutant des identifiants propres aux sous-types. Par exemple, on définit un sous-type MAGASIN qui a son identifiant propre, MagasinId :





    Passons maintenant au niveau du MLD (modèle logique des données), c'est-à-dire au niveau du modèle relationnel au sens de DB-MAIN (attention, il y a un clash sémantique, car depuis sa création en 1970, « modèle relationnel » est synonyme de « théorie relationnelle »). Pour cela, dans la barre de menus, vous cliquez sur l’onglet « Product » et choisissez l’option « Copy Product », afin d’avoir un clone de votre MCD, rattaché à ce dernier, clone que je nomme ici « MLD ». Je supprime la contrainte de partition en sélectionnant le surtype ENTITE pour y décocher les cases « total » et « disjoint », sinon au niveau SQL, j’aurais des cycles épouvantables...

    Le diagramme est alors le suivant :




    Pour produire le diagramme « relationnel », on choisit « Transform » > « Relational model » :





    Vous noterez que les sous-types ont hérité de l’identifiant IdEntite du surtype ENTITE. En outre, MagasinId est toujours identifiant de MAGASIN, IdEntite y est identifiant alternatif. En outre le symbole « ref » signifie que pour chaque sous-type, IdEntite fait l’objet d’une contrainte référentielle : quel que soit le sous-type, une valeur de IdEntite est contrainte à être d’abord une valeur de IdEntite dans ENTITE.

    En revanche, DB-MAIN n’a pas recopié dans les sous-types les autres attributs de ENTITE, ça serait effroyablement redondant et extrêmement pénible à maintenir !


    2) Passons au MCD dans lequel figure l’entité-type ADRESSE :

    A nouveau je crée un MLD, en commençant par créer un clone du MCD, débarrassé de la contrainte de partitionnement :





    D’où le MLD (par Transform > Relational model) :




    Où l’identifiant de ADRESSE est la paire {IdEntite, IdAdresse}, puisque ADRESSE avait été définie comme entité-type faible dans le MCD (utilisation de l’identification relative).

    Dans tous les cas, au niveau MLD j'ai perdu la contrainte de partitionnement, mais je rattraperai le coup (au moins l'exclusion) au niveau SQL...
    (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.

  12. #12
    Membre du Club
    Homme Profil pro
    informatique de gestion
    Inscrit en
    Janvier 2011
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : informatique de gestion

    Informations forums :
    Inscription : Janvier 2011
    Messages : 92
    Points : 67
    Points
    67
    Par défaut
    Merci à tous pour vos explications
    Grâce à vous je vois enfin le bout du tunnel
    Bonne journée

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

Discussions similaires

  1. [DOM] [Xerces] Insertion d'une entité
    Par Traroth dans le forum Format d'échange (XML, JSON...)
    Réponses: 10
    Dernier message: 19/05/2008, 09h28
  2. [MCD] Utilité d'une entité "Adresse" dans mon MCD ?
    Par korrigan dans le forum Schéma
    Réponses: 1
    Dernier message: 05/09/2007, 11h41
  3. [MCD]Faut-il une Entité Date ?
    Par Francis dans le forum Schéma
    Réponses: 2
    Dernier message: 17/01/2005, 18h48
  4. Modelisation d'une médiatheque
    Par Sylk dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 05/11/2004, 09h28
  5. modelisation d'une piste de ski
    Par djbed dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 28/06/2004, 16h03

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