|
Forums, dernières contributions
Design d'une table de fait offrant plusieurs vision de date
Bonjour,
Afin de trouver une bonne idée pour modéliser une base par rapport au besoin du projet, je fais appel à vos différences expériences.
Le contexte du projet est le suivant, chaque mois je reçois un fichier contenant les informations du contrat son montant notamment. Il est nécessaire d'historiser ce fichier afin d'offrir une vision photo ( voir les informations du contrat transmise dans le fichier de janvier 2011 par exemple).
Par contre, ce contrat possède une date de prise d'effet antérieur, égal ou postérieur à la date de photo qui peut changer dans le temps (donc dans les photos successive). Les utilisateurs veulent pouvoir analyser le contrat en date d'effet : revenant à parcourir toutes les photos pour trouver la bonne photo avec la date d'effet souhaité.
pour ce point , je pensais mettre un attribut au niveau de la table pour qualifier la date d'effet. Aboutissant à une table suivante :
create table fact (
date_photo date,
date_effet date,
statut_effet integer,
numero_contrat integer,
montant decimal(13,2)
)
: répondant à l’algorithme suivant : à la réception d'un fichier les données seront intégrés avec un statut_effet =1 (indiquant que cette ligne est celle en vigueur pour cette date d'effet), puis toutes les autres lignes (autre date_photo) où le couple (date_effet,numero_contrat), venant d'être intégré dans la dernière photo, est présent le statut_effet sera mis à 0
Et là où cela se complique est que les utilisateurs voudraient analyser les contrats à une date d'effet donnée tout en indiquant une date de photo max à prendre ( afin d'occulter des photos intégrées). Avec ma gestion précédente, cela revient à chercher pour chaque couple (numero_contrat, date_effet__recherché) la date de photo max . Pour le moment je ne voyais que la solution d'avoir une vue logique répondant au sql suivant , dans le but de faire une jointure entre cette vue et ma table de fait ( sur le numero_contrat, date_effet et date_photo)
sql de la vue :
select max(date_photo) , date_effet, numero_contrat
from fact
where date_effet = ? la date d'effet souhaitée ?
and
date_photo
|