Bonjour,
Je gère une base de données dans laquelle la notion de temps commence à prendre de plus en plus d'importance, alors que ce n'était fonctionnellement pas le cas initialement (au moment de sa conception initiale). Vu que j'ai la main sur le modèle de données, je voudrais y mettre un peu de rigueur, si possible.
Il s'agit d'enquêtes statistiques sur des points du territoire, avec collecte de données annuelles (chaque année, on collecte des informations sur différents points du territoire).
Or, il se trouve que les données collectées évoluent dans le temps : certaines sont créées à partir d'une année donnée, d'autres s'arrêtent à partir d'une certaine date (et d'autres ont une nomenclature qui évolue dans le temps, mais là, ça ne me pose pas de problème).
Je sais que la modélisation, c'est l'art d'éviter de stocker le "bonhomme NULL".
Mais là, je sèche sur le modèle le plus efficace dans mon cas : pour le moment, je dispose d'une entité "points" avec un attribut par donnée collectée sur le point. J'ai également un attribut qui stocke l'année de collecte.
Sauf que, dès lors qu'une donnée apparaît dans la collecte, ou en disparait, je me retrouve avec autant de NULL sur les points créés avant la mise en place de la collecte de cette donnée, et pareil pour les points créés après la disparition de la collecte de la donnée.
Exemple : l'attribut "donneeA" n'a plus été collecté à partir de la campagne 2007.
Tous les points correspondant à des enquêtes au-delà de 2007 ont donc NULL en base dans la colonne "donneeA".
Autre exemple : l'attribut "donneeB" a commencé à être collecté en 2008. Ainsi, tous les points correspondant aux campagnes antérieures à 2008 ont NULL sur cette colonne en base.
Ma question est donc : est-ce que je peux améliorer mon modèle de données pour limiter tous ces NULL ? Sachant qu'il n'est pas question de créer une table POINT par campagne annuelle...
J'ai regardé du côté de la 6ème forme normale (qui permet de prendre en compte les notions temporelles), sans vraiment y trouver de réponse jusque-là...
Pour moi, c'est une première étape, avant de complexifier encore le modèle (bientôt, un point pourra être visité plusieurs fois dans le temps, mais ça fera l'objet d'une autre question plus tard...).
Merci pour vos conseils et votre aide,
ced
Partager