|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre actif
![]() Inscription : avril 2011 Messages : 426 ![]() |
Bonjour,
J'ai regardé un peu ce que je pouvais trouver sur la modélisation d'arbre et je suis tombé sur http://sqlpro.developpez.com/cours/arborescence/ J'ai donc lu attentivement les explications mais je ne trouve pas mon bonheur pour comprendre comment faire. J'aimerais si vous le voulez bien que l'on puisse pratiquer cette modélisation au travers d'un MCD et d'un exemple concret. Comment feriez-vous pour modéliser l'arbre des contours administratifs de la France. Par exemple : Commune->Communautés de communes->Département->Région J'ai fait exprès d'ajouter les communautés de communes car comme vous le savez certaines communes ne sont pas rattachées à une communauté de communes. Je remercie donc par avance la ou les personnes qui me porteront assistance sur ce phénomène particulier. |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 184 ![]() |
Bonjour Heretik25,
Region ---1,n---[Etre composé]---1,1--- Departement ---1,n---[Etre composé]---1,1--- Commune ---0,1---[faire partie]---1,n--- CommunauteCommune Region(Id_Region, Nom, ...) ;Je te suggère d'étudier ce billet de CinePhil (qu'il te faut garder sous le coude), et de potasser les conseils de Fsmrel.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#3 |
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 415 ![]() |
bonsoir,
fsmrel a justement déjà proposé de relier des entités géographiques avec une nomenclature dans la discussion: [MLD] Gestion multi-localisation / pays à voir ...
__________________
L'informatique fait son grand retour au lycée... |
|
10
|
|
|
#4 |
|
Membre habitué
![]() Daniel BALLANDRetraité MO Inscription : mai 2008 Messages : 69 ![]() |
J'avais construit un truc comme ça un jour, mais je me suis planté lamentablement quand j'ai voulu faire du nettoyage, supprimer des données devenues inutiles et encombrantes. Je me suis retrouvé avec une quantité de nulls impressionnante.
Dans l'exemple ici, il s'agirait par exemple de supprimer un département qui s'est déclaré pays indépendant, ou dans l'exemple fsmrel de supprimer un pays entier. C'est une base qui ne peut que croître sans jamais réduire, sauf à renuméroter toutes les lignes et tous les liens.
__________________
R.BASILE, 1971 : "Il y a mille et un procédés pour accélérer des particules. Le seul véritablement fondamental restant...le carnet de chèques." |
|
|
00
|
|
|
#5 |
|
Membre actif
![]() Inscription : avril 2011 Messages : 426 ![]() |
Effectivement, il faut que cela soit évolutif car il peut y avoir de nouvelles communes d'autres supprimées, de nouveaux type de zonage...
J'ai essayé de généraliser en créant une entité-type "zonage". A celle-ci, j'accroche une autre entité type_zonage, qui me permet de connaître à quel zonage j'ai à faire. Le gros du problème est d'avoir une table qui permet de gérer les différentes relations entre les zonages. De plus, je cherche une manière performante en termes de requêtage car je vais avoir potentiellement des milliers de connexions entre les zonages (je travail à l'échelle de la région) et sur des zonages administratifs mais aussi environnementaux. A savoir que certains zonages n'ont pas de relations avec les autres zonages. Il faut donc le prévoir. Et en bonus, il me faut savoir stocker les attributs différents des différents zonages. Voici un MCD en PJ, merci d'apporter vos critiques notamment sur le stockage des attributs non commun et la gestion des relations inter-zonages. |
|
|
00
|
|
|
#6 |
|
Membre habitué
![]() Daniel BALLANDRetraité MO Inscription : mai 2008 Messages : 69 ![]() |
Erreur, je n'ai rien dit.
Je viens de constater, en réfléchissant plus : rien n'interdit de détruire l'enregistrement portant l'identifiant numéro 3 par exemple. Il faut seulement penser à détruire aussi tout ce qui l'utilise, etc...
__________________
R.BASILE, 1971 : "Il y a mille et un procédés pour accélérer des particules. Le seul véritablement fondamental restant...le carnet de chèques." |
|
|
00
|
|
|
#7 |
![]() ![]() |
Heretik, ton schéma de zonage est à creuser.
Je ne comprends pas trop ce qu'est "type_zonage". Que représente aussi "lien_zonage" ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#8 |
|
Membre actif
![]() Inscription : avril 2011 Messages : 426 ![]() |
Bonjour CinePhil,
-zonage serait l'entité type qui contiendrait la géométrie des communes, les départements...avec leur nom -type_zonage va lister les différents type de zonages (département,commune, canton...) -lien_zonage doit permettre de lister les différents liens entre les zonages. Par exemple, la commune A est lié au département B, le département B à la région C... |
|
|
00
|
|
|
#9 | |||
![]() ![]() |
Citation:
Citation:
Citation:
geom_zonage -0,n----inclure |----------------------0,n---------| Tu n'as pas d'entité type lien_zonage mais seulement une association. Il faudra prévoir des contraintes pour ne pas inclure un département dans un autre ou une région dans un département. D'ailleurs, il faudrait peut-être aussi que tu modélises la hiérarchie entre les types de zonage. type_zonage -0,n----inclure |---------------------0,n--------| A toi de voir les cardinalités selon ton cas. Si on s'en tient au découpage administratif français, un département ne peut être inclus que dans une région mais une commune peut être incluse dans un département et dans une communauté de communes. Attention aussi aux pièges : - il y des cantons contenant plusieurs communes et des communes contenant plusieurs cantons ; - au niveau des polygones, il y a des îles, des enclaves départementales et même une enclave (au moins) étrangère (espagnole) sur le territoire français ; - tu peux avoir des hiérarchies (commune->département->région->France) et d'autres découpages non hiérarchiques (bassins versants je crois).
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|||
|
00
|
|
|
#10 | |||
|
Membre actif
![]() Inscription : avril 2011 Messages : 426 ![]() |
Citation:
Citation:
Citation:
Comment faire en sorte de modéliser sans ce faire avoir sur ce point ? Merci ! En PJ, la nouvelle version du MCD. |
|||
|
|
00
|
|
|
#11 |
![]() ![]() |
Les contraintes se modélisent dans le MCD selon une sémantique appropriée.
Tu peux voir la FAQ à partir de ce point pour avori des exemples. La hiérarchies entre types de zonages, je t'en ai donné un exemple dans mon message précédent. Les pièges seront à éviter en saisissant les bonnes hiérarchies entre types de zonages dans la BDD. Pour les pièges sur les polygones, à toi de voir si une île est représentée par un geom_zonage ou si elle est incluse dans le geom_zonage de sa commune (pour autant que la commune soit le plus petit zonage que tu considères). Si tu distingues l'île de sa commune d'appartenance, tu dois prévoir le type_zonage "île" ou "enclave" et prévoir l'association entre le type_zonage "île" et le type_zonage "commune". Mais il y a peut-être aussi des îles qui sont à elles seules des communes (le Mont Saint-Michel est-il une commune en plus d'être une île ou appartient-il à une commune de la Manche ?). Ensuite, c'est la contrainte entre les associations inclure qui évitera une inclusion impossible d'un zonage dans un autre.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#12 |
|
Membre actif
![]() Inscription : avril 2011 Messages : 426 ![]() |
J'en suis à ce niveau de MCD et j'aimerais savoir comment feriez-vous pour prendre en compte les différentes contraintes décrites ci-avant.
Aussi, j'aimerais savoir si ce type de modélisation permettra un bon temps de réponse sur les requêtes. Par avance, merci.
|
|
|
00
|
|
|
#13 |
![]() ![]() |
Comme déjà dit, l'idée est intéressante mais le schéma autorise les erreurs. Par exemple, rien n'interdit d'inclure Toulouse dans la Haute-Normandie ou la Gironde dans Paris !
![]() En toute rigueur, il conviendrait donc de commencer par modéliser les hiérarchies existants entre les types de zonages. MCD : type_zonage -0,n----inclure |----0,n-------------------------| Tables : type_zonage (tzn_id, tzn_libelle) tzn_inclure_tzn (tit_id_zone_incluse, tit_zone_incluante) Exemple de données : type_zonage (tzn_id, tzn_libelle) 1, 'Commune' 2, 'Canton' 3, 'Département' 4, 'Région' tzn_inclure_tzn (tit_id_zone_incluse, tit_zone_incluante) 1, 2 => Communes dans Canton 1, 3 => Communes dans Département 2, 1 => Cantons dans Commune 2, 3 => Cantons dans Département 3, 4 => Département dans Région Ensuite, un zonage n'a qu'un seul type. MCD : zonage -1,1----avoir----0,n- type_zonage Table supplémentaire : zonage (zn_id, zn_id_type, zn_nom, zn_geom...) Puis la hiérarchie des zonages : zonage -0,n----inclure |----0,n-----------------| Je t'ai donné un lien qui explique la représentation des contraintes dans un MCD, chose que je ne peux pas faire en mode texte ici. Je pense qu'il faut mettre une contrainte entre les deux associations "inclure" et l'association "avoir" de manière à assurer qu'un zonage ne puisse être inclu que dans un zonage de type compatible. Mais il restera quand même des cas qui ne sont pas modélisables et qui ne dépendent que de la qualité de la saisie des données. Même avec la contrainte citée ci-dessus, rien n'interdit d'inclure Toulouse en Haute-Normandie ! Quant aux attributs de zonages, c'est le même principe. Il faut une contrainte pour assurer que les attributs que l'on associe à un zonage de type ville ne soient pas ceux d'un département. Bon courage !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#14 |
|
Membre actif
![]() Inscription : avril 2011 Messages : 426 ![]() |
Bonjour et merci pour votre réponse,
Donc selon vos explications, il ne me restait plus qu'à faire comme cela : ![]() Par rapport à la rapidité sur le requêtage, pensez-vous que la performance sera bonne avec ce système ? Merci. |
|
|
00
|
|
|
#15 | |
![]() ![]() |
Il manque les contraintes mais les entités et les associations me semblent correctes.
Citation:
- du volume de données ; - du SGBD utilisé ; - de la profondeur des arbres (nombre de niveaux hiérarchiques).
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
|
00
|
|
|
#16 | |||
|
Membre actif
![]() Inscription : avril 2011 Messages : 426 ![]() |
Citation:
Citation:
Citation:
|
|||
|
|
00
|
|
|
#17 | |||
![]() ![]() |
Citation:
Citation:
Citation:
commune => département => région = 3 niveaux, encore que le dernier sera la racine de l'arbre puisqu'il n'y a semble t-il qu'une seule région.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|||
|
00
|
|
|
#18 |
|
Membre actif
![]() Inscription : avril 2011 Messages : 426 ![]() |
Je parlais bien-sûr de branches lorsque je disais 6 ou 7.
Pour en finir, d'après-vous cette modélisation tient donc "la route" |
|
|
00
|
|
|
#19 |
![]() ![]() |
OK. À essayer.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
Copyright © 2000-2012 - www.developpez.com