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 :

Géographie des civilisations [MCD]


Sujet :

Schéma

  1. #1
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 466
    Points : 333
    Points
    333
    Par défaut Géographie des civilisations
    Bonjour,
    Je poste ici car je voudrai modéliser une base de données et je ne sais pas vraiment comment commencer.
    Voici le problème : depuis 10 ans à peu près j'accumule des données pour un programme qui présente celles-ci. Pour le moment ces données sont à la fois sous forme de fichier excel et programmation VBA (pour la maintenance de la base : essentiellement ajout de données et vérification de la cohérence de celles-ci) et sous forme de fichiers binaires et textes pour l'utilisation des données. les fichiers binaires et textes sont générés à partir de VBA Excel. Le programme existe en Visual Basic et en Java avec presque les mêmes formats de données. Dans les deux cas l'ensemble des données est chargé en mémoire pour utilisation.
    Je souhaite passer à une base de données qui permettent surtout de pouvoir utiliser les données sans tout charger en mémoire.
    Pour le moment seul le programmeur peut modifier les données (ajout, suppression, modification), l'utilisateur du programme lui n'a que l'accés en lecture (enfin pour le moment et encore ...).
    Je pense que le meilleur moyen de commencer est d'écrire en français ce que sont les données et à quoi elles servent (je crois que j'ai lu ça dans un des nombreux tutoriels que je lis depuis une semaine).
    C'est donc mon premier message à ce sujet. Le prochain rentrera dans le vif du sujet.

  2. #2
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 466
    Points : 333
    Points
    333
    Par défaut Les données elles-mêmes
    Je dispose d'un ensemble des textes de j'appelle paragraphes. Chaque paragraphe a un titre, une date de début, une date de fin, un texte, une civilisation de référence.
    Donc j'ai un objet ? entité ? modèle ? classe ? Paragraphe avec les attributs (propriétés) suivantes : titre, début, fin, texte, civilisation plus un identifiant qui servira de clé primaire.
    Les civilisations comporte un nom et une localisation
    J'ai donc une entité Civilisation avec les attributs nom, longitude, latitude.
    J'ai une relation entre les paragraphes et les civilisations :
    Chaque paragraphe fait référence à une et une seule civilisation.
    Une civilisation est référencée par 0, 1 ou plusieurs paragraphes.
    J'ai aussi une relation entre les paragraphes eux-mêmes :
    Chaque paragraphe est suivi par 0, 1 ou plusieurs paragraphes

    D'après mes lectures Paragraphes et Civilisations sont représentés par des rectangle avec en haut le nom de l'entité et en dessous la liste de ses attributs (avec leur type ... mais ce n'est pas un problème ici).
    Les relations sont représentées de la façon suivante :

    Paragraphes ------1,1--- Fait référence à ---- 0,n ------Civilisations
    Paragraphes ------0,n--- Suit ----0,n ------Paragraphes.

    Question : comment décrire la situation suivante ? La localisation d'une civilisation dépend de l'époque (pas nécessairement en lien avec celle d'un paragraphe). par exemple la civilisation A est localisée au point X avant -2000, en Y entre -2000 et -1000, et en Z après -1000 ?

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Bonjour,

    Il va vous falloir une entité localisation ou lieu ou...
    Cette entité va répertorier vos lieux.

    Ensuite il faudra une relation entre votre Civilisation et cette localisation.
    A ceci il va falloir rajouter cette notion de date, afin qu'une civilisation ne se retrouve pas en 2 lieu différent à une même date (et encore ce point est discutable).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Civilisation-0,n----------Situe--------------0,n-Lieu
                                 |
    Date-0,n---------------------
    Cette entité date ou période va, de mon point de vue, s'intégrer dans la relation Situe sans créer une table quand vous allez passer au MPD.

    Ce qui va nous donner :
    t_civilisation_civ (civ_id, ...)
    t_lieu_lie (lie_id, ....)
    a_civ_lie (#civ_id, #lie_id, periode_debut, periode_fin)

    La il faudra gérer la recouvrement des periodes pour qu'une civilisation ne se retrouve pas en 2 lieu identique pour la même période.


    Maintenant, vu que l'histoire est souvent approximative quand on parle de fait qui ce sont passés il y a très longtemps, vous pourriez avoir des inconnus au niveau des périodes.


    Pour contrer ce problème on pourrait alors transformer la relation Situe en entité, du coup le mcd deviendrait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Civilisation-0,n-----Presente----------1,1-Location-1,1---Situe---0,n-Lieu
                                                     |
    Date-0,N------------Concerne------------------0,2

    Au niveau Mpd, on utiliserai du coup une clef incrémentale pour l'entité Location afin de ne pas être géné par les périodes :
    t_civilisation_civ (civ_id, ...)
    t_lieu_lie (lie_id, ....)
    t_location_loc (loc_id, #civ_id, #lie_id, loc_periode_debut, loc_periode_fin)


    Vous pouvez attendre d'autre commentaire de personnes plus avisées que moi sur le sujet

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Bonjour et bienvenue dans le monde des bases de données relationnelles !
    Je pense que le meilleur moyen de commencer est d'écrire en français ce que sont les données et à quoi elles servent
    Effectivement, c'est un bon début. On appelle aussi ça établir le "dictionnaire des données". Il s'enrichira au fur et à mesure de l'avancement de la conception avec des précisions telles que le type de données (caractères, numérique, date) et leur taille (longueur fixe ou variable pour les chaînes de caractères, quelle taille maxi pour les chaînes variables, degré de précision pour les nombres décimaux...).

    Je dispose d'un ensemble des textes de j'appelle paragraphes. Chaque paragraphe a un titre, une date de début, une date de fin, un texte, une civilisation de référence.
    Donc j'ai un objet ? entité ? modèle ? classe ? Paragraphe avec les attributs (propriétés) suivantes : titre, début, fin, texte, civilisation plus un identifiant qui servira de clé primaire.
    Si tu modélises à l'aide de la méthode Merise et de son célèbre "Modèle conceptuel de données" (MCD), on parle alors "d'entité" ou, plus rigoureusement, "d'entité type" et de "propriétés".
    Si par contre tu modélises à l'aide du langage UML et de son célèbre "Diagramme de classes", on parle alors de "classe" et "d'attributs".

    J'ai donc une entité Civilisation avec les attributs nom, longitude, latitude.
    Sur le principe, OK. On y ajoutera néanmoins un identifiant artificiel de type entier.
    Sur le fond, la latitude et la longitude ne sont-ils pas trop restrictifs pour y loger toute une civilisation ? Ne faudrait-il pas plutôt modéliser des régions pour localiser les civilisations ?

    J'ai une relation entre les paragraphes et les civilisations :
    Dans un MCD, on parle "d'association" pour ne pas confondre avec la "relation" de l'algèbre relationnelle qui correspond davantage à l'entité type.

    Chaque paragraphe fait référence à une et une seule civilisation.
    Une civilisation est référencée par 0, 1 ou plusieurs paragraphes.
    Paragraphes ------1,1--- Fait référence à ---- 0,n ------Civilisations
    OK. Pour simplifier et ne pas entraîner d'étourderies dit plutôt "Une civilisation est référencée par 0 à plusieurs paragraphes".
    Voir mon billet de blog sur la bonne écriture des règles de gestion.

    J'ai aussi une relation entre les paragraphes eux-mêmes :
    Chaque paragraphe est suivi par 0, 1 ou plusieurs paragraphes
    Paragraphes ------0,n--- Suit ----0,n ------Paragraphes.
    Idem.
    Un détail : on écrit le nom des entités types au singulier, là aussi pour lever toute ambiguïté quant au sens des associations.
    Il est d'usage également de nommer les associations à l'aide d'un verbe à l'infinitif, ce qui permet plus aisément de lire l'association dans les deux sens, une fois à la forme active, l'autre à la forme passive.

    D'après mes lectures Paragraphes et Civilisations sont représentés par des rectangle avec en haut le nom de l'entité et en dessous la liste de ses attributs (avec leur type ... mais ce n'est pas un problème ici).
    Les relations sont représentées de la façon suivante :
    La symbolique de l'entité type est bonne quand on dessine un MCD à la main ou à l'aide d'un logiciel de modélisation. L'association est représentée par un ovale contenant le verbe et éventuellement un trait horizontal de séparation lorsque l'association est porteuse de données.

    Mais sous forme textuelle, ta représentation ici est bonne. J'ai cependant pour habitude de séparer l'ensemble de l'association (verbe + cardinalités + traits de liaison) des entités types avec un espace.

    J'écrirais donc tes associations de la sorte :
    Paragraphe -1,1----Référencer----0,n- Civilisation

    Paragraphe -0,n----Suivre
    |------------------0,n-------|

    Mais es-tu sûr de ta règle de gestion et donc du MCD pour la succession des paragraphes ?
    Si je dis que les paragraphes B et C suivent le paragraphe A, cela peut vouloir dire :
    A -> B
    |---> C

    ou bien :
    A -> B -> C

    Et le modèle n'est pas le même ! Idem pour les prédécesseurs.

    Question : comment décrire la situation suivante ? La localisation d'une civilisation dépend de l'époque (pas nécessairement en lien avec celle d'un paragraphe). par exemple la civilisation A est localisée au point X avant -2000, en Y entre -2000 et -1000, et en Z après -1000 ?
    Il faut donc une entité type "Epoque".

    Règles de gestion :
    Une civilisation peut être localisée à plusieurs époques et une époque peut localiser plusieurs civilisations.

    Ici, je suppose, comme le suggère la structure de ton entité type "Civilisation", et que justement je contestais, qu'une civilisation ne peut être localisée qu'en un seul point géographique à une époque définie.

    MCD :
    Civilisation -1,n----localiser----0,n- Epoque

    L'association "localiser" est ici porteuse des coordonnées du point géographique.

    À toi de définir les bonnes règles de gestion. Elle pourraient amener à réaliser une association ternaire en considérant une entité type "Point_geographique" si une civilisation peut être localisée en plusieurs point à la même époque ou si plusieurs civilisations peuvent être localisées au même point à la même époque ou...

    Bon courage !

    EDIT : Punkoff a posté pendant que je rédigeais. Cela vous fait deux avis.

  5. #5
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 466
    Points : 333
    Points
    333
    Par défaut
    Tout d'abord merci d'avoir répondu si vite et d'accepter d'aider un débutant qui a bien du mal avec ces notions de BD.

    Citation Envoyé par punkoff Voir le message
    Bonjour,
    Il va vous falloir une entité localisation ou lieu ou...
    Cette entité va répertorier vos lieux.
    Oui en effet ce sera l'objet d'un prochain message
    Ensuite il faudra une relation entre votre Civilisation et cette localisation.
    A ceci il va falloir rajouter cette notion de date, afin qu'une civilisation ne se retrouve pas en 2 lieu différent à une même date (et encore ce point est discutable).
    Cela est déjà géré et je peux utiliser des procédures qui vérifient la cohérence des données. A un moment je dois faire des choix donc j'ai décidé qu'une "civilisation" (le terme est peut-être mal choisi) n'avait qu'un seul lieu à une certaine époque. En fait ce que j'appelle "civilisation" est un ensemble de pays ou régions dont l'histoire est commune.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Civilisation-0,n----------Situe--------------0,n-Lieu
                                 |
    Date-0,n---------------------
    Cette entité date ou période va, de mon point de vue, s'intégrer dans la relation Situe sans créer une table quand vous allez passer au MPD.

    Ce qui va nous donner :
    t_civilisation_civ (civ_id, ...)
    t_lieu_lie (lie_id, ....)
    a_civ_lie (#civ_id, #lie_id, periode_debut, periode_fin)
    La il faudra gérer la recouvrement des periodes pour qu'une civilisation ne se retrouve pas en 2 lieu identique pour la même période.
    Maintenant, vu que l'histoire est souvent approximative quand on parle de fait qui ce sont passés il y a très longtemps, vous pourriez avoir des inconnus au niveau des périodes.
    Pour contrer ce problème on pourrait alors transformer la relation Situe en entité, du coup le mcd deviendrait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Civilisation-0,n-----Presente----------1,1-Location-1,1---Situe---0,n-Lieu
                                                     |
    Date-0,N------------Concerne------------------0,2
    Au niveau Mpd, on utiliserai du coup une clef incrémentale pour l'entité Location afin de ne pas être géné par les périodes :
    t_civilisation_civ (civ_id, ...)
    t_lieu_lie (lie_id, ....)
    t_location_loc (loc_id, #civ_id, #lie_id, loc_periode_debut, loc_periode_fin)
    Vous pouvez attendre d'autre commentaire de personnes plus avisées que moi sur le sujet
    La seule chose qu'il me faut préciser dans ma description en français des données c'est qu'une "civilisation" ne peut avoir qu'un seul lieu à un moment donné. C'est un choix personnel car je souscris bien entendu à ce qui est dit au sujet de l'imprécision des localisations et des périodes de celles-ci. D'ailleurs quand je parle de période Debut,Fin il s'agit de [Debut,Fin[. De plus on doit avoir bien entendu Debut < Fin. De plus une civilisation a au moins une localisation.
    Donc peut-être ce schéma :
    L'entité Lieux comprend comme attribut une longitude, une latitude (plus bien sûr un identifiant qui servira de clé primaire).

    Donc je verrai cela (Entités en gras, relations en italique)

    Civilisation ---- 1,N ----- situe ---- 0,N ---- Lieux

    La relation "situe" (est-ce bien comme cela que l'on appelle les liens entre deux entités ?) comprendrait deux attributs Début et Fin

  6. #6
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 466
    Points : 333
    Points
    333
    Par défaut
    Tout d'abord merci de votre aide. J'ai lu les deux réponses dans l'ordre et je m'aperçois que certains des points que j'ai abordés dans ma réponse à Punkoff ont trouvé des réponses ou confirmation dans celle-ci.

    Citation Envoyé par CinePhil Voir le message
    Bonjour et bienvenue dans le monde des bases de données relationnelles !

    Effectivement, c'est un bon début. On appelle aussi ça établir le "dictionnaire des données". Il s'enrichira au fur et à mesure de l'avancement de la conception avec des précisions telles que le type de données (caractères, numérique, date) et leur taille (longueur fixe ou variable pour les chaînes de caractères, quelle taille maxi pour les chaînes variables, degré de précision pour les nombres décimaux...).


    Si tu modélises à l'aide de la méthode Merise et de son célèbre "Modèle conceptuel de données" (MCD), on parle alors "d'entité" ou, plus rigoureusement, "d'entité type" et de "propriétés".
    Si par contre tu modélises à l'aide du langage UML et de son célèbre "Diagramme de classes", on parle alors de "classe" et "d'attributs".


    Sur le principe, OK. On y ajoutera néanmoins un identifiant artificiel de type entier.
    Sur le fond, la latitude et la longitude ne sont-ils pas trop restrictifs pour y loger toute une civilisation ? Ne faudrait-il pas plutôt modéliser des régions pour localiser les civilisations ?
    En fait tout cela est inclus dans un ensemble plus vaste. Donc pour ce qui concerne les "civilisations", j'ai répondu dans la réponse à Punkoff.
    Dans un MCD, on parle "d'association" pour ne pas confondre avec la "relation" de l'algèbre relationnelle qui correspond davantage à l'entité type.

    OK. Pour simplifier et ne pas entraîner d'étourderies dit plutôt "Une civilisation est référencée par 0 à plusieurs paragraphes".
    J'essaierai de m'en souvenir.
    Voir mon billet de blog sur la bonne écriture des règles de gestion.
    Le lien ne semble pas marcher.

    Un détail : on écrit le nom des entités types au singulier, là aussi pour lever toute ambiguïté quant au sens des associations.
    Il est d'usage également de nommer les associations à l'aide d'un verbe à l'infinitif, ce qui permet plus aisément de lire l'association dans les deux sens, une fois à la forme active, l'autre à la forme passive.

    La symbolique de l'entité type est bonne quand on dessine un MCD à la main ou à l'aide d'un logiciel de modélisation. L'association est représentée par un ovale contenant le verbe et éventuellement un trait horizontal de séparation lorsque l'association est porteuse de données.

    Mais sous forme textuelle, ta représentation ici est bonne. J'ai cependant pour habitude de séparer l'ensemble de l'association (verbe + cardinalités + traits de liaison) des entités types avec un espace.

    J'écrirais donc tes associations de la sorte :
    Paragraphe -1,1----Référencer----0,n- Civilisation

    Paragraphe -0,n----Suivre
    |------------------0,n-------|

    Mais es-tu sûr de ta règle de gestion et donc du MCD pour la succession des paragraphes ?
    Si je dis que les paragraphes B et C suivent le paragraphe A, cela peut vouloir dire :
    A -> B
    |---> C

    ou bien :
    A -> B -> C

    Et le modèle n'est pas le même ! Idem pour les prédécesseurs.
    Il s'agit du premier modèle et non pas de la transitivité (les notions de relations, d'ensembles et de logiques ne me posent pas de problème étant de formation maths (agrégation de mathématiques).

    Il faut donc une entité type "Epoque".

    Règles de gestion :
    Une civilisation peut être localisée à plusieurs époques et une époque peut localiser plusieurs civilisations.

    Ici, je suppose, comme le suggère la structure de ton entité type "Civilisation", et que justement je contestais, qu'une civilisation ne peut être localisée qu'en un seul point géographique à une époque définie.

    MCD :
    Civilisation -1,n----localiser----0,n- Epoque

    L'association "localiser" est ici porteuse des coordonnées du point géographique.
    A priori il y aura une table Point alors qu'il n'y aura pas de table Epoque. Je pensais plutôt à
    Civilisation -1,n----localiser----0,n- Point
    localiser comporte alors deux attributs : debut et fin
    À toi de définir les bonnes règles de gestion. Elle pourraient amener à réaliser une association ternaire en considérant une entité type "Point_geographique" si une civilisation peut être localisée en plusieurs point à la même époque ou si plusieurs civilisations peuvent être localisées au même point à la même époque ou...
    Par décision personnelle, une civilisation ne peut être qu'à un lieu en même temps. Par contre effectivement un même lieu peut servir à diverses civilisations.
    Bon courage !
    Merci

  7. #7
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 466
    Points : 333
    Points
    333
    Par défaut Quel logiciel de modélisation ?
    Quel logiciel gratuit de modélisation pouvez-vous me conseiller ? J'ai essayé OpenModelSphere qui semble sur-dimensionner par rapport à mes besoins.

  8. #8
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 466
    Points : 333
    Points
    333
    Par défaut
    Citation Envoyé par Patrice Henrio Voir le message
    Le lien ne semble pas marcher.
    Bon j'ai trouvé. Je vais ré-écrire les associations.

  9. #9
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 466
    Points : 333
    Points
    333
    Par défaut Mes règles de gestion (chap 1)
    Un paragraphe est un texte avec un titre, une date de début, une date de fin
    Une civilisation est un nom
    Un lieu est un point avec une longitude et une latitude

    Les associations :
    Un paragraphe dépend d'une et une seule civilisation
    Chaque paragraphe peut suivre plusieurs paragraphe (éventuellement aucun) et être suivi par plusieurs paragraphes (éventuellement aucun). Si je note cette relation -> (et x> pour la négation de cette relation) il s'agit du schéma A -> B et A->C. Dans ce cas on a B x> C et C x> B. De même si A->B alors B x> A.
    Une civilisation est localisée en un et un seul lieu à une date donnée.

    Les MCD
    Paragraphe -1,1-----référencer---------0,n- Civilisation
    Paragraphe -0,n-----suivre-------------0,n- Paragraphe
    Civilisation -1,n------localiser-----------0,n- Lieu
    l'association localiser a les attributs debut et fin avec la contrainte debut < fin

    Ai-je bien défini la situation ? Mon dictionnaire est-il bien commencé ?

  10. #10
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    J'ai corrigé le lien dans mon message précédent.

    Je lis les associations...
    Paragraphe -1,1-----référencer---------0,n- Civilisation
    Un paragraphe référence une seule civilisation et une civilisation peut être référencée par plusieurs paragraphes.

    Paragraphe -0,n-----suivre-------------0,n- Paragraphe
    Un paragraphe peut suivre plusieurs paragraphes et un paragraphe peut être suivi par plusieurs paragraphes.

    Civilisation -1,n------localiser-----------0,n- Lieu
    Une civilisation est localisée dans un à plusieurs lieux et un lieu peut localiser plusieurs civilisation.

    Il y a peut-être un petit problème sur la dernière association.
    Selon ce schéma, une civilisation ne peut être localisée en un lieu qu'une seule fois. Ne peut-il exister une civilisation qui peut être localisée en X à une période, en partir puis y revenir à une autre période ?

  11. #11
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 466
    Points : 333
    Points
    333
    Par défaut
    Citation Envoyé par CinePhil Voir le message


    Une civilisation est localisée dans un à plusieurs lieux et un lieu peut localiser plusieurs civilisation.

    Il y a peut-être un petit problème sur la dernière association.
    Selon ce schéma, une civilisation ne peut être localisée en un lieu qu'une seule fois. Ne peut-il exister une civilisation qui peut être localisée en X à une période, en partir puis y revenir à une autre période ?
    En effet la règle serait plutôt

    Civilisation -n,n----------localiser--------0,n- Lieu

    Il me vient alors une question : en général pour une civilisation il y a un et un seul lieu invariant avec le temps, le fait d'avoir un lieu évoluant avec le temps est plutôt l'exception. Ce détail a-t-il sa place au moment de la modélisation.

    Plus généralement : une entité A est en relation avec 1 et une seule entité B mais pour un et un seul cas particulier, une entité A n'est en relation avec aucune entité B. Ce point doit-il se gérer à ce moment de la conception ou plus tard ?

  12. #12
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 466
    Points : 333
    Points
    333
    Par défaut Et DBDesigner ?
    Est-ce que DBDesigner peut-être intéressant pour modéliser ?

  13. #13
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 466
    Points : 333
    Points
    333
    Par défaut Pourtour
    Toujours pour le même projet :
    Un pourtour est une liste de points (je dis bien liste et pas ensemble) car les points sont ordonnés. Si un point figure dans le pourtour il n'y figure qu'une seule fois.
    Comment représenter cela.

  14. #14
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    En effet la règle serait plutôt

    Civilisation -n,n----------localiser--------0,n- Lieu
    Ce qui signifie :
    Une civilisation est localisée dans plusieurs lieu et un lieu peut localiser plusieurs civilisation.
    Cette fois, il faudrait qu'une civilisation participe au moins deux fois à l'association. Je ne pense pas que ce soit ce que tu veux dire.

    Il me vient alors une question : en général pour une civilisation il y a un et un seul lieu invariant avec le temps, le fait d'avoir un lieu évoluant avec le temps est plutôt l'exception. Ce détail a-t-il sa place au moment de la modélisation.
    Je ne comprends pas cette notion d'évolution du lieu ! Une ïle volcanique qui grandit ou disparaît ?

    Plus généralement : une entité A est en relation avec 1 et une seule entité B mais pour un et un seul cas particulier, une entité A n'est en relation avec aucune entité B. Ce point doit-il se gérer à ce moment de la conception ou plus tard ?
    Donc tu as d'abord ceci :
    A -1,1----associer----0,n- B

    Mais le cas où A n'est pas associé à un B ne peut pas respecter ce schéma.
    Il faut donc, dès la conception, faire ce MCD :
    A -0,1----associer----0,n- B

    Est-ce que DBDesigner peut-être intéressant pour modéliser ?
    Sauf s'il a été repris par d'autres développeurs, DBDesigner est obsolète. Son créateur a été embauché par MySQL pour développer MySQL Workbench qui s'insprire très fortement de DBDesigner.

    Je ne conseillerais pas ce logiciel à un débutant en modélisation car son schéma de base est le schéma Entity/Relationship qui est plus proche du MLD de Merise que du MCD et permet de faire facilement des erreurs.

    Tu peux par contre essayer Open Modelsphere.

    Un pourtour est une liste de points (je dis bien liste et pas ensemble) car les points sont ordonnés. Si un point figure dans le pourtour il n'y figure qu'une seule fois.
    Comment représenter cela.
    Donc on peut dire la règle de gestion suivante :
    Un pourtour est composé de points et un point peut entrer dans la composition de plusieurs pourtours.

    MCD :
    pourtour -1,n----composer----0,n- point

    Les tables SQL étant à considérer comme des ensembles, la notion de liste ordonnée doit être implémentée via une colonne qui définira l'ordre des points dans le pourtour. C'est donc une propriété portée par l'association.

    À noter que les bons SGBDR contiennent des outils pour enregistrer et manipuler des entités géographiques. En la matière, il vaut mieux utiliser Postgresql que MySQL.

  15. #15
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 466
    Points : 333
    Points
    333
    Par défaut
    Pour le premier point : en fait ce sont les civilisations nomades qui peuvent voyager avant de se fixer quelque part. Exemple les wisigoths commencent à faire parler d'eux en Grèce, puis en Italie, en Aquitaine et enfin en Espagne.
    Mais ces cas ne sont pas la majorité. Pour éviter l'interprétation inévitable quand on précise la réalité de ce que l'on parle j'ai préféré aborder le problème conceptuel avec cet exemple d'entité A lié à un et un seul B sauf pour un cas.
    Dans OpenModelSphere ils n'ont pas l'air d'accepter la multiplicité n,n à moins que ce ne soit ?,?.
    Est-il nécessaire voire utile de préciser dés cette phase de construction quel SGBD on pense utiliser (je ne suis pas du tout fixé).

    Comment indique-t'on sur le schéma l'attribut ordre pour l'association composer dans ce que tu as indiqué ?
    pourtour -1,n----composer----0,n- point

  16. #16
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 466
    Points : 333
    Points
    333
    Par défaut transmettre un diagramme
    J'ai vu que certains ont réussi à insérer le diagramme de leur MCD dans leur message. Comment font-ils ? Une copie d'écran ?

  17. #17
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Dans OpenModelSphere ils n'ont pas l'air d'accepter la multiplicité n,n
    Parce qu'elle n'est pas standard !
    Comme je l'ai dit dans mon précédent message, n,n oblige toute civilisation à être localisée au moins deux fois.
    Si on met en oeuvre un mécanisme vérifiant cette contrainte dans la BDD, il faut donc aussi un mécanisme qui oblige à enregistrer au moins deux localisations en même temps qu'une nouvelle civilisation.

    Si vraiment tu tiens à cette cardinalité mini multiple, puisque n signifie plusieurs et que plusieurs commence à 2, la bonne cardinalité serait alors 2,n. Ça je crois que la méthode Merise le prévoit.

    Est-il nécessaire voire utile de préciser dés cette phase de construction quel SGBD on pense utiliser (je ne suis pas du tout fixé).
    Non. Mais des contraintes découvrables dès la conception peuvent éliminer des SGBD. Dans ton cas, sur ce point, tu sembles libre de ton choix.

    D'autre part, comme les logiciels de modélisation modernes sont capables de générer le MLD puis le code SQL de la BDD, plus tôt tu définis le SGBD que tu vas utiliser et plus tôt tu peux spécifier, dès le MCD, les types des données, lesquels peuvent avoir des psécificités selon le SGBD employé.

    Comment indique-t'on sur le schéma l'attribut ordre pour l'association composer dans ce que tu as indiqué ?
    Comme je l'ai dit, l'ordre devra faire l'objet d'une colonne dans la table, donc d'une propriété dans l'association.

    J'ai vu que certains ont réussi à insérer le diagramme de leur MCD dans leur message. Comment font-ils ? Une copie d'écran ?
    Oui par exemple. Ou bien si le logiciel autorise l'enregistrement sous un format d'image acceptable par le forum.

    Je crois qu'il y a une rubrique d'aide au forum en haut de la liste des forums.

  18. #18
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 466
    Points : 333
    Points
    333
    Par défaut Le MCD en image
    En réponse au message de CinePhil la cardinalité de l'association localiser est bien de 1,n.

    La modélisation telle qu'elle apparaît sous OpenModelSphere en image jointe . Ma base de données est donc réduite.
    Mon problème actuel est comment représenter une liste. CinePhil m'a expliqué mais j'ai du mal à exploiter sa réponse. Ainsi
    Comme je l'ai dit, l'ordre devra faire l'objet d'une colonne dans la table, donc d'une propriété dans l'association.
    Cela signifie que ma table Pourtour aura un attribut ordre (?) ou tu parles plutôt de la table d'association. Comme tu peux le voir pour le moment je l'ai mis en propriété de l'association. Faut-il le préciser ailleurs ? Je pense que mon problème d'interprétation fait que je confonds en un seul concept association et table d'association.

    Une autre question qui me vient au sujet des points. Deux solutions s'offrent à moi vu mes contraintes pour les latitudes et longitudes. Représenter les points par un entier seulement et calculer la latitude et la longitude à partir de ce nombre ou faire comme indiqué sur le schéma. Y-a-t'il une meilleure solution ?
    Images attachées Images attachées  

  19. #19
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Cela signifie que ma table Pourtour aura un attribut ordre (?) ou tu parles plutôt de la table d'association.
    Dans mon message de 0h44, je disais ceci :
    Citation Envoyé par CinéPhil
    C'est donc une propriété portée par l'association.
    Donc tu as bien fait de mettre une propriété dans l'association.

    Une autre question qui me vient au sujet des points. Deux solutions s'offrent à moi vu mes contraintes pour les latitudes et longitudes. Représenter les points par un entier seulement et calculer la latitude et la longitude à partir de ce nombre ou faire comme indiqué sur le schéma. Y-a-t'il une meilleure solution ?
    Je ne comprends pas comment tu calcules une latitude et une longitude par rapport à un entier !
    Ta modélisation de l'entité type Point est bonne.

    Voyons ton MCD...

    Jusqu'à présent, nous n'avons abordé dans cette discussion que les parties :
    Paragraphe - Civilisation - Point - Pourtour

    Je découvre maintenant le reste.
    Civilisation -1,n----appartenir----0,1- Pays
    Traduction :
    Une civilisation appartient à un à plusieurs pays et un pays peut "être la propriété" d'une seule civilisation.
    N'y a t-il pas des pays qui ont vu se succéder plus d'une civilisation ?
    France : Gaulois, Romains, Francs avant de devenir des Français ?

    Pays -0,1----nommer----1,n- Nom
    Traduction :
    Un pays peut avoir au plus un nom et un nom nomme de un à plusieurs pays.
    Encore récemment, des pays ont changé de nom, sans qu'ils changent forcément de frontières (pourtour). Zaïre => République Démocratique du Congo.

    Pays -1,1----limiter----1,n- Pourtour
    Traduction :
    Un pays est limité par un seul pourtour et un pourtour limite de un à plusieurs pays.
    Au cours de l'Histoire, de nombreux pays ont changé de pourtour, sans forcément changer de nom, ou ont gardé leur pourtour et ont changé de nom, ou les deux en même temps !

    Du fait de l'association entre pays et pourtour d'une part, et du chemin Pays - Civilisation - Point - Pourtour d'autre part, une civilisation peut être localiser en un point appartenant à un pourtour qui n'est celui d'aucun pays de cette civilisation.
    On appelle ça une boucle dans le MCD et c'est source d'incohérence potentielle de données.

    Je pense que tu devrais revoir toute cette partie du MCD.
    Soit tu définis qu'un pays est un certain pourtour d'une date de début à une date de fin et que durant cette période il peut porter plusieurs noms, soit tu définis qu'un pays a un nom d'une date de début à une date de fin et qu'il peut avoir plusieurs pourtours.

    Ensuite, puisque la civilisation appartient à un pays d'une date de début à une date de fin, il ne me semble pas très opportun de localiser une civilisation sur un point du pourtour, c'est à dire à sa frontière.

    Comme je l'ai dit, il existe dans les systèmes d'information géographiques intégrés aux SGBD des outils pour manipuler les polygones. Entre autre, je crois qu'il existe des outils pour calculer le barycentre d'un polygone et ainsi pouvoir écrire un texte centré sur ce point.

  20. #20
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 466
    Points : 333
    Points
    333
    Par défaut
    Citation Envoyé par CinePhil Voir le message

    Je ne comprends pas comment tu calcules une latitude et une longitude par rapport à un entier !
    Ta modélisation de l'entité type Point est bonne.
    Car mes latitudes et longitudes sont limitées à 2 décimales, donc je n'ai qu'un nombre fini de latitudes et de longitudes (36000 pour les longitudes et 18000 pour les latitudes) donc un point peut se représenter par le nombre 36000 * (9000 + 100 * latitude) + 100 * longitude + 18000. Inversement si N est un nombre représentant un point alors latitude = ((partie entière de (N / 36000))-9000)/100 et longitude = ((N mod 36000) - 18000)/100.
    Bon ma conversion est faite rapidement et n'est peut-être pas juste ou peut être simplifiée mais je sais que c'est faisable. Ceci étant c'est un point secondaire.

    Voyons ton MCD...

    Jusqu'à présent, nous n'avons abordé dans cette discussion que les parties :
    Paragraphe - Civilisation - Point - Pourtour

    Je découvre maintenant le reste.
    Civilisation -1,n----appartenir----0,1- Pays

    Traduction :
    Une civilisation appartient à un à plusieurs pays et un pays peut "être la propriété" d'une seule civilisation.
    N'y a t-il pas des pays qui ont vu se succéder plus d'une civilisation ?
    France : Gaulois, Romains, Francs avant de devenir des Français ?
    C'est bien le danger de mettre des signifiants dans les tables : on sur-interprète ce que l'on veut faire. En fait mes pays ne sont pas des pays au sens habituel mais seulement un élément comportant un pourtour, une période, une liste de dirigeants, fait référence à une civilisation (qui n'a pas non plus le sens habituel de civilisation). Donc je souscris à tes dires sur "un pays a vu plusieurs civilisations" mais dans la conception de mes données, quand un pays change de civilisation, c'est le pays qui change.

    Pays -0,1----nommer----1,n- Nom

    Traduction :
    Un pays peut avoir au plus un nom et un nom nomme de un à plusieurs pays.
    Encore récemment, des pays ont changé de nom, sans qu'ils changent forcément de frontières (pourtour). Zaïre => République Démocratique du Congo.
    Si le nom change ce n'est plus le même "pays"

    Pays -1,1----limiter----1,n- Pourtour

    Traduction :
    Un pays est limité par un seul pourtour et un pourtour limite de un à plusieurs pays.
    Au cours de l'Histoire, de nombreux pays ont changé de pourtour, sans forcément changer de nom, ou ont gardé leur pourtour et ont changé de nom, ou les deux en même temps !
    Si le pourtour change ce n'est plus le même "pays"

    Du fait de l'association entre pays et pourtour d'une part, et du chemin Pays - Civilisation - Point - Pourtour d'autre part, une civilisation peut être localiser en un point appartenant à un pourtour qui n'est celui d'aucun pays de cette civilisation.
    On appelle ça une boucle dans le MCD et c'est source d'incohérence potentielle de données.

    Je pense que tu devrais revoir toute cette partie du MCD.
    Soit tu définis qu'un pays est un certain pourtour d'une date de début à une date de fin et que durant cette période il peut porter plusieurs noms, soit tu définis qu'un pays a un nom d'une date de début à une date de fin et qu'il peut avoir plusieurs pourtours.
    Et pourquoi pas un pays a un certain pourtour et un certain nom d'une date de début à une date de fin ?
    Je n'ai pas compris ce problème de boucle. Je vais creuser ce point.
    Ensuite, puisque la civilisation appartient à un pays d'une date de début à une date de fin, il ne me semble pas très opportun de localiser une civilisation sur un point du pourtour, c'est à dire à sa frontière.
    La table point est plus générale que seulement pour des pourtours. Et donc il est parfaitement licite qu'un point n'appartiennent à aucun pourtour et soit seulement une localisation de civilisation. J'aurai pu aussi créer deux tables de points l'une pour les pourtours et l'autre pour les civilisations.
    Comme je l'ai dit, il existe dans les systèmes d'information géographiques intégrés aux SGBD des outils pour manipuler les polygones. Entre autre, je crois qu'il existe des outils pour calculer le barycentre d'un polygone et ainsi pouvoir écrire un texte centré sur ce point.
    Oui mais j'ai déjà écrit toutes les procédures nécessaires à l'affichage des données. Seul l'accès actuellement ne me convient pas (même si c'est parfaitement fonctionnel) essentiellement car pour le moment tout est en mémoire lors de l'exécution du programme. Tu trouveras plus ample information sur ce lien : http://histoiremondiale.free.fr/index.php

    De plus je pensais utiliser H2 qui a l'avantage de s'insérer dans un programme en java. L'utilisateur final qui a installé le programme installera en même temps H2 qui gérera seulement les accès en lecture à la base qui elle aussi est chargée en même temps que le programme.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Formalisation graphique des algorithmes
    Par David R. dans le forum Algorithmes et structures de données
    Réponses: 14
    Dernier message: 08/12/2012, 10h21
  2. recherches des cours ou des explications sur les algorithmes
    Par Marcus2211 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 19/05/2002, 22h18
  3. [langage] comment créer des fichiers ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 05/05/2002, 16h33
  4. Comparer des fichiers de données : Quel Langage ?
    Par Anonymous dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 24/04/2002, 22h37
  5. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01

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