Bonjour,
J'ai depuis un bail une base géographique française (territoriale, administrative et démographique) qui fonctionne correctement mais que j'ai à l'époque modélisé à la va-vite avec mes siper compétences DBA de programmeur moyen : médiocres.
J'ai décidé de remettre tout ça au goût du jour et je me pose quelques questions en matière de "bonnes pratiques" :
(J'utilise MySQL 5 avec InnoDB, les colonnes sont incomplètes)
Les relations "de base" sont les suivantes :
Le premier problème se pose pour l'enregistrement des chefs lieux (régions, départements, ar. et cantons), idéalement j'aurais crée des clés étrangères dans l'autre sens toutes allant vers la table "Ville", mais le croisement de FK ne me paraît pas être la bonne solution.
J'ai donc pensé créer des tables de jointure (ChefLieu_Departement etc) comportant l'id de la sub-division et celui de la ville concernée.
Je peux aussi enregistrer simplement le code INSEE (unique, not null) de la ville en question et effectuer une recherche avec JOIN.
Quelle serait selon vous la solution idéale ? En prenant également en considération les performances.
De même je serais souvent amené à faire des recoupements démographiques à l'échelle d'un canton/ar./departement/région à partir des infos d'une ville (population, densité etc).
Est-il préférable d'incorporer ces données directement dans la table "Ville" ou de créer une table à part ?
Et pour finir, est-il intéressant d'effectuer les calculs et les recoupements directement à partir du SGBD en renvoyant des vues pré-remplies ou comme actuellement, au niveau de l'application ?
Merci d'avance, et désolé pour le pavé fourre-tout.
PS: Les perfs ne sont pas un point critique, j'ai surtout envie d'apprendre à faire ça correctement, tant qu'à faire.
Partager