Salut à tous !
Une question sur laquelle j'hésite me vient: comment stocker un vecteur dans une BDD MySQL?
Par vecteur, j'entends des coordonnées (on pourrait dire stocker un point géométrique) comme (x,y,z).
Après un rapide tour d'horizon (sur le web), j'ai plusieurs pistes:
1 • Stocker une version sérialisée du vecteur ("x, y, z" par exemple), et la parser; je n'aime pas du tout cette solution (impossible de calculer facilement la norme du vecteur par exemple), une DB n'étant pas un simple stockeur de strings
2 • Stocker le vecteur sous la forme d'un POINT si l'extension MySQL Geometry est active; mais les points sont en 2D uniquement.
3 • Stocker chaque coordonnée dans une colonne (INT x, INT y, INT z); cela pollue un peu ma structure (si on a plusieurs vecteurs dans une table, celle-ci gonfle vite en nombre de colonnes), mais cela me semble pas trop mal
4 • Stocker, dans une table dédiée, l'id du vecteur, le numéro de coordonnée et sa valeur (INT id_vector, INT/ENUM id_coord, INT value); là, c'est plutôt élégant (on peut stocker tous les vecteurs dans une seule table, et s'y référer), on n'a pas de limite de dimensions (stocker un vecteur 3D requière d'insérer 3 lignes, stocker un vecteur 32D requiert d'insérer 32 lignes, aucun changement de structure), et on peut facilement faire des calculs.
J'hésite donc entre la 3e (dont j'avais plutôt l'habitude) et la 4e (que je viens de découvrir). Quoiqu'une solution mixte, comme stocker les vecteurs 3D dans une table à part sous la forme INT id, INT x, INT y, INT z, me semble encore meilleure (je vais probablement partir là-dessus).
[edit]5e solution (sur laquelle je partirai pour des vecteurs; pour de la géométrie 2D, je partirai plutôt sur la 2e):
5 • Créer une table par type de vecteur (2D, 3D...) et stocker les coordonnées en colonnes (Vecteur2d (INT id, DOUBLE x, DOUBLE y) ; Vecteur3d (INT id, DOUBLE x, DOUBLE y, DOUBLE z)). C'est souple, cela évite d'avoir des colonnes en trop dans les tables utilisatrices (1 colonne avec l'id du vecteur, plutôt qu'une colonne par coordonnée), mais cela ajoute une jointure.
Vous avez choisi quelle solution vous, pour stocker vos vecteurs 2D/3D/4D... ?
Une question sur laquelle j'hésite me vient: comment stocker un vecteur dans une BDD MySQL?
Par vecteur, j'entends des coordonnées (on pourrait dire stocker un point géométrique) comme (x,y,z).
Après un rapide tour d'horizon (sur le web), j'ai plusieurs pistes:
1 • Stocker une version sérialisée du vecteur ("x, y, z" par exemple), et la parser; je n'aime pas du tout cette solution (impossible de calculer facilement la norme du vecteur par exemple), une DB n'étant pas un simple stockeur de strings
2 • Stocker le vecteur sous la forme d'un POINT si l'extension MySQL Geometry est active; mais les points sont en 2D uniquement.
3 • Stocker chaque coordonnée dans une colonne (INT x, INT y, INT z); cela pollue un peu ma structure (si on a plusieurs vecteurs dans une table, celle-ci gonfle vite en nombre de colonnes), mais cela me semble pas trop mal
4 • Stocker, dans une table dédiée, l'id du vecteur, le numéro de coordonnée et sa valeur (INT id_vector, INT/ENUM id_coord, INT value); là, c'est plutôt élégant (on peut stocker tous les vecteurs dans une seule table, et s'y référer), on n'a pas de limite de dimensions (stocker un vecteur 3D requière d'insérer 3 lignes, stocker un vecteur 32D requiert d'insérer 32 lignes, aucun changement de structure), et on peut facilement faire des calculs.
J'hésite donc entre la 3e (dont j'avais plutôt l'habitude) et la 4e (que je viens de découvrir). Quoiqu'une solution mixte, comme stocker les vecteurs 3D dans une table à part sous la forme INT id, INT x, INT y, INT z, me semble encore meilleure (je vais probablement partir là-dessus).
[edit]5e solution (sur laquelle je partirai pour des vecteurs; pour de la géométrie 2D, je partirai plutôt sur la 2e):
5 • Créer une table par type de vecteur (2D, 3D...) et stocker les coordonnées en colonnes (Vecteur2d (INT id, DOUBLE x, DOUBLE y) ; Vecteur3d (INT id, DOUBLE x, DOUBLE y, DOUBLE z)). C'est souple, cela évite d'avoir des colonnes en trop dans les tables utilisatrices (1 colonne avec l'id du vecteur, plutôt qu'une colonne par coordonnée), mais cela ajoute une jointure.
Vous avez choisi quelle solution vous, pour stocker vos vecteurs 2D/3D/4D... ?