Bonsoir,
Il y a quelques temps, j'avais lancé un sujet concernant la modélisation d'une base de données de gestion de spectres d'étoiles variables (ici).
Le projet avance lentement mais surement. Une bonne partie est déjà fonctionnelle mais pas encore en ligne.
Je dois implémenter les propriétés des spectres, cette fois-ci, et je ne sais pas trop comment m'y prendre.
La liste des propriétés est en pièce jointe.
Pour résumer :
Il existe 2 types de spectres :
- les spectres classiques
- les spectres échelles
1 - Une propriété peut être commune aux 2 types (comme la résolution, l'unité de longueur d'onde utilisée, etc.)
2 - Une propriété peut être spécifique à un type de spectre (la racine de l'ordre d'un spectre échelle n'est valide que pour les spectres échelles, par exemple)
3 - Une propriété possède une valeur d'un type donné (qui dépend de l'unité de la propriété)
4 - Une propriété possède une valeur qui peut répondre à un format spécifique
5 - Une propriété possède une valeur qui peut se situer dans un intervalle donné
6 - Une propriété possède un caractère obligatoire ou facultatif
La plupart de ces propriétés sont extraites d'un en-tête de fichier de spectre (un fichier au format FITS) qui associe un mot-clé (le nom de la propriété) à une valeur. (la valeur de la propriété) Les valeurs des propriétés sont ensuite vérifiées puis ventilées dans les différentes tables de la base ; certaines propriétés font l'objet de tables à part entière (l'observateur, le site d'observation, le télescope utilisé, etc.) tandis que d'autres ne sont que des champs que je dois mettre quelque part, associées au spectre (résolution spectrale, la correction ou non de la vitesse héliocentrique, etc.).
Mon problème vient du fait que je m'arrache les cheveux pour modéliser.
Est-ce que je mets les propriétés et leurs valeurs dans une relation dédiée ou est ce que je dois faire un système d'héritage (un spectre échelle hérite d'un spectre classique) ?
Comment créer des propriétés sans que je me retrouve avec des NULL partout si la propriété n'a pas de valeur ?
Si je créé une relation dédiée pour supprimer les valeurs NULL, comment créer des propriétés de différents types ?
Comment associer une propriété à sa règle de formatage et d'intervalle ?
J'ai fait de nombreux essais et aucun ne me satisfait.
Merci de votre aide
Vincent
Partager