Bonjour,
Je viens de réaliser une base de données qui correspond à des enquêtes qui sont réalisé dans le monde entier avec des critères différents.
Par exemple sur le calcul du salaire :
pour la Belgique, le salaire mensuel peut dépendre de plusieurs facteurs comme : Fumeur, Nombre de voiture(s) ,…….
Pour la France : le salaire mensuel peut dépendre de plusieurs facteurs la quantité de vin bu par jour, le nombre d’enfant, ….
Donc dans chaque pays, ils ont tous leurs propres critères et pour compliquer la chose, les critères peuvent changer d’une année à l’autre.
Donc j’ai réalisé une base de données, avec :
Dictionnaire : qui décrit le nom des champs et sa correspondance physique,
Data_Pays : une table qui contient les données sur le pays.
Data_Individu : une table qui contient les données sur les individus habitant dans le pays.
La relation : DataPays ---<----1 to n ------ DataIndividu
Dictionnaire // possède les informations metadata dans la base de donnée
Id_dic * Primary key
Ecran * défini la table de base qui stockera l’information (ex dans ce cas si : Pays-> correspondra a Data_Pays et Individu => Data-individu)
Année * l’année de l’enquête
Question * la question de l’enquête (Etes vous fumeur ?)
View * Permet de créer des views pour l’accès à des outils d’analyse (Business Object.) ou regroupment selon l’enquête spécifique.
Champs * Le nom du champ physique
Data_Pays //infos général sur le pays
Année * année | PK
Pays * pays | PK
FB_0001 * Champs générique pouvant contenir la réponse des questions du pays
FN_0001 *
FN_0002 *
FN_0003 *
FC_0001 *
FN_0002 *
Data_Individu //infos général sur les individus
Id_individu * id | PK
Année * | PK
Pays * | PK
FN_0001 * Champs générique pouvant contenir la réponse des questions sur les individus
FN_0002 *
FN_0003 *
FB_0001 *
FC_0001 *
FN_0002 *
Définition des préfixes de champs
FN numerique
FB Boelan ;
FC String
Contenu du dictionnaire :
Id_dic Année Question Ecran view Champs
1 2005 Est-ce que vous Fumez ? Pays Vw_Data_Bel DataPays FB_0001
2 2005 Nombre de voiture(s) ? Individu Vw_Data_Bel FN_0001
3 2005 Quantité de vin bu? Individu Vw_Data_France FN_0001
4 2005 Nombre d’enfant ? Individu Vw_Data_France FN_0002
5 2005 Nombre d’habitant dans pays ? Pays Vw_Pays_Belgique FN_0001
6 2005 Est-ce une république ? Pays Vw_Pays _Belgique FB_0001
5 2005 Nombre d’habitant dans pays ? Pays Vw_Pays _France FN_0002
6 2005 Est-ce une république ? Pays Vw_Pays _France FB_0001
Vous pouvez constater que le champ FN_0001 a 2 significations selon le pays. FN_0001 pour la France signifie le nombre la quantité de vin bu par un individu et pour la Belgique signifie le nombre de voiture(s)
Pour faciliter la lecture des données il y a toute une série de procédures stoker qui facilite la création des views. Pour que utilisateurs puissent accéder facilement aux données mais que tous les programmes tiers accèdent aux données en créant dynamiquement la requête pour chaque année car il y’a possibilité de changement signification d’un champ d’une année a l’autre.
Ceci est un résumé très court de ma db qui est basé sur ce schéma.
Mon problème est de faire un bon MCD ou un bon schéma. J’ignore comment décrire et documenter une telle structure.
Merci de votre aide.
Si cela vous intéresse je peux compléter mon schéma et mes descriptions
Partager