|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : janvier 2004 Messages : 250 ![]() |
Bonjour,
après avoir lu plusieurs interventions sur ce sujet, je ne sais plus exactement où j'en suis. Le mieux est donc de vous exposer la situation. Je dispose de
Un exemple sera peut-être plus parlant : soit un contours composé d'un limes correspondant aux points 25 à 52, un deuxième contours composé par exemple des points suivants : les points 113 à 127 (distincts des points précédents), le point 37, puis les points 129 à 135 (distincts des points précédents). Avec une table POINTS acceptant les doublons, on a besoin de deux limes, un (25,52) pour le premier contours, et un (113,135) pour le deuxième. le point 128 étant identique au point d'identifiant 37. Si la table POINTS n'accepte pas les doublons il faudra pour le deuxième contour trois limes : (113,127), (37,37), (129,135). Quand je parle de doublons il s'agit bien sûr de doublons relatifs : mêmes infos sauf l'identifiant. Votre avis.
__________________
C'est en respectant les autres que l'on se fait respecter. |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Sylvain DevidalChef de projets Générix Inscription : février 2010 Messages : 1 517 ![]() |
Je suis un peu stupéfait par la conception de la table "LIMES".
Un ID est une donnée "anonyme" et "dénuée de sens". Ainsi, dire qu'un LIME est composée de l'ensemble des POINT dont l'id est compris entre une valeur et une autre me semble extrêmement hasardeux. Pour moi, il faut une table LIME_POINTS (id_lime, id_point, ordre) voir même LIME_SEGMENT (id_segment, id_lime, id_point1, id_point2, id_precedent) avec auto-jointure id_precedent = id_segment Ainsi : - plus de doublons de points - plus de règle étrange de continuité des id des points dans un LIME - pas de truc biscornu pour déterminer le nombre de points d'un LIME ou la somme des distances entre points. En revanche, après pour la dénormalisation, il faut surtout connaître les besoins. |
|
|
00
|
|
|
#3 | |
|
Membre du Club
![]() Inscription : janvier 2004 Messages : 250 ![]() |
Citation:
__________________
C'est en respectant les autres que l'on se fait respecter. |
|
|
|
00
|
|
|
#4 | |
|
Membre du Club
![]() Inscription : janvier 2004 Messages : 250 ![]() |
Citation:
J'espère n'avoir pas tout mélangé.
__________________
C'est en respectant les autres que l'on se fait respecter. |
|
|
|
00
|
|
|
#5 | |
|
Membre du Club
![]() Inscription : janvier 2004 Messages : 250 ![]() |
Citation:
Sinon je pense que LIMES_SEGMENT signifie qu'un limes (Limes est un bout de frontière fortifiée chez les romains, lime est un citron vert) est constitué de plusieurs segment. Mais un limes étant la frontière entre deux régions, il est parcouru dans un sens pour la première région et dans l'autre sens pour la deuxième région : faut-il doubler les infos en intervertissant id_point1 et id_point2 et id_precedent et id_segment ? Je ne vois pas trop comment utiliser ce LIMES_SEGMENTS.
__________________
C'est en respectant les autres que l'on se fait respecter. |
|
|
|
00
|
|
|
#6 | |||||
![]() ![]() |
Citation:
Sous réserve de confirmation par fsmrel et autres spécialistes de l'algèbre relationnelle, si je traduis "(P(x,y) et P(x,z) alors y=z)" en "x->y et x->z alors y->z", je pense que la proposition est fausse. Un simple exemple : Mon numéro de sécu "détermine" que je suis né en 1963 et au mois de juillet mais l'année est bien différente du mois ! Citation:
Citation:
Citation:
Citation:
Par contre, pour dessiner un contour, peut importe l'ordre des LIMES qui le composent. Le LIMES allant de (1,1) vers (2,4) puis vers (4,5) aura toujours la même forme et sera toujours positionné au même endroit, que je le dessine en premier ou en 5ème dans le contour. Si je dessine le contour de la France, Je peux commencer par la frontière pyrénéenne puis dessiner la Bretagne puis le Golfe du Lion puis la frontière alsacienne avec l'Allemagne... Au final, j'aurais toujours le contour de la France. Je pense donc que tu dois t'en sortir avec une table associative LIMES_POINTS (id_limes, id_point, ordre) et une table associative CONTOURS_LIMES (id_contour, id_limes). Conclusion : Pas de dénormalisation nécessaire ici je pense !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. 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 la suite Linux Mageïa ! |
|||||
|
00
|
|
|
#7 | ||||
|
Membre du Club
![]() Inscription : janvier 2004 Messages : 250 ![]() |
Citation:
Citation:
Par contre P(SS, (mois1,année1)) et P(SS, (mois2,année2)) alors nécessairement mois1=mois2 et année1 = année2. Ce qui est l'expression que le numéro de sécu est fonctionnel pour le mois de naissance et aussi pour l'année de naissance. [quote] Selon moi, un point déterminé par une longitude et une latitude doit être unique dans la table. Pour en revenir au relationnel, on a bien dans cette table {identifiant} -> {longitude, latitude} il me semble, sans pour autant que l'identifiant du point n'ait une quelconque signification sémantique ni ne détermine un ordre a priori, autre que celui de l'insertion des points dans la table. Il s'agit donc d'un ensemble de points ordonnés définissant une ligne brisée. Il s'agit exactement de cela : ordre d'insertion dans la table. Citation:
Citation:
__________________
C'est en respectant les autres que l'on se fait respecter. |
||||
|
|
00
|
|
|
#8 | |
![]() ![]() |
Citation:
T'es-tu penché sur Postgis ou autres outils spécifiques à certains SGBD pour les données géométriques ? MySQL n'est pas recommandé pour ce genre de chose car sa partie géo est très en deçà de la concurrence !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. 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 la suite Linux Mageïa ! |
|
|
00
|
|
|
#9 | |
|
Membre du Club
![]() Inscription : janvier 2004 Messages : 250 ![]() |
Citation:
Je reste persuadé qu'une étude approfondie ne peut (doit) pas faire l'impasse sur les outils qui mettront en oeuvre la solution. Ainsi ta solution de construction des pourtours sans ordre compliquera énormément le tracé de ceux-ci alors que ma solution où je me préoccupe dés la conception de la base de données du fait que ce pourtour est constitué de limes ordonné simplifie tout à fait ce tracé. A la limite on pourrait dire qu'à la modélisation ta solution est tout à fait valable mais que je m'apercevrai lors du passage au processus applicatif que j'aurai du prendre une autre modélisation. C'est d'ailleurs ce que j'ai du faire à un autre moment. Chaque pourtour est inclus dans un cercle de centre et rayon qui peuvent être calculés à chaque utilisation des données. J'ai préféré rajouter trois colonnes et calculer une fois pour toute ces données qui servaient uniquement lors de l'utilisation. En fait les données sont faites pour être utilisées dans un programme spécifique et c'est donc celui-ci qui détermine de quoi j'ai besoin et comment j'organise mes données.
__________________
C'est en respectant les autres que l'on se fait respecter. |
|
|
|
00
|
|
|
#10 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 12 074 ![]() |
Attention chaque ordonnancement de frontière est propre au pays. Il vous faut donc une entité POINT, une entité PAYS et une association n/m reliant les points et les pays que j’appellerais "délimite" et qui contiendra un attribut "ordre".
En PJ un MCD similaire que je donne à mes étudiants et stagiaire : http://www.developpez.net/forums/att...1&d=1354714728 A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#11 | |
|
Membre du Club
![]() Inscription : janvier 2004 Messages : 250 ![]() |
Citation:
Donc je fixe le sens de parcours de la frontière, je définis des listes de points (bout de frontières), la frontière est composé de bouts de frontières orientés (parcourus dans un sens ou dans l'autre). Je n'ai pas tout compris dans le schéma. A priori la partie altitude ne me concerne pas ici, seuls les deux rectangles parcelle et point m'intéresse. Pour le point il y a un identifiant qui est la clé primaire et les deux coordonnées (qui sont ici en radians) avec je pense une contrainte sur la longitude et une autre sur la latitude (à priori pas la même car la longitude prend ses valeurs sur un intervalle de 2*PI alors que la latitude c'est sur PI seulement. Une parcelle a un identifiant et un numéro de parcelle (unique j'imagine et pourrait donc éventuellement servir de clé primaire). Pour la saisie point j'imagine aussi que c'est propre à cette construction. Enfin la relation est "délimite" entre les points et les parcelles. C'est le 0,n et le 1,n que je m'explique moins (je suis en auto-formation sur tout ce qui concerne les bases de données, il n'y a que l'algèbre relationnelle qui me vient de mes lointaines, mais entretenues, études de maths). Chaque point peut délimiter 0, 1 ou plusieurs parcelles (on peut éliminer le cas 0 car on peut décider de n'intégrer dans la table que des points servant à délimiter au moins une parcelle). Chaque parcelle est délimité nécessairement par plusieurs points (et même au moins 3). En définitive peut-être que mon passage par les bouts de frontière ne simplifie rien du tout. J'hésite à mettre à bas une construction qui date de 10 ans. Au départ tout passe par des fichiers binaires avec une gestion perso des données, rien de compatible avec un quelconque format public, puis une structure plus proche des "standards" avec des tables pouvant être interrogées via SQL mais pour aller vite j'ai conservé une partie de la première structure.
__________________
C'est en respectant les autres que l'on se fait respecter. |
|
|
|
00
|
|
|
#12 |
|
Membre du Club
![]() Inscription : janvier 2004 Messages : 250 ![]() |
J'ai donc testé la base avec l'astuce des limes (morceaux de frontière) et sans : verdict avec limes la base est de 4,5 MO, sans 25 MO.
Même si ce n'est pas très propre je crois que je vais continuer avec mes limes.
__________________
C'est en respectant les autres que l'on se fait respecter. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com