Je développe un entrepôt de données et je me suis heurté à un problème dont je ne suis pas sûr. Le schéma actuel est défini ci-dessous:Conception de l'entreposage de données Question
DimInstructor < - Table Dimension pour les instructeurs DimStudent < - Table Dimension pour les étudiants
Je veux mettre en œuvre un scénario dans lequel si les détails d'un changement d'instructeur dans ma base de données OLTP, je veux pour ajouter un nouvel enregistrement dans la table DimInstructor pour des raisons de génération de rapports historiques.
Maintenant, je veux créer une table de dimension de leçon appelée DimLesson. Dans DimLesson je veux créer une référence à l'instructeur.
La table DimInstructor contient:
InstructorDWID < - champ d'identité lorsqu'il est entré dans DW InstructorID < - L'ID d'instructeur qui est venu de la base de données OLTP
Maintenant, je ne peux pas faire InstructorID primaire key car il n'est pas garanti d'être unique (si l'instructeur modifie son nom, il y aura 2 enregistrements dans le DW avec la même valeur InstructorID). Donc, ma question est, comment puis-je référencer l'instructeur de DimLesson? Est-ce que j'utilise le InstructorDWID? Si oui, devrais-je avoir 2 entrées pour un instructeur dans DimInstructor, cela rendrait les requêtes plus compliquées quand je veux regarder toutes les leçons par un instructeur spécifique.
Toute aide serait appréciée!
Merci pour cela. Comment procéder pour référencer la clé d'une autre table de dimension? La table DimLessons contient donc toutes les leçons pour un instructeur particulier. La table des leçons fonctionne de la même manière, en utilisant le type 2. – Paul
Les tables de dimension ne sont (généralement) pas supposées se référencer mutuellement. Ce sont toutes des entités indépendantes et c'est la table de faits qui fait référence à ces tables. D'après ce que je comprends, votre scénario aurait une inscription de classe au niveau factuel. Chaque inscription de classe serait un enregistrement dans la table de faits. Students_dim, instructors_dim, classes_dim contiendra les attributs correspondants. Le paramètre enrollment_fact contiendrait les clés de chacune de ces tables et tous les autres détails tels que enrolllment_date et ainsi de suite. –
Je pense que je comprends. Donc, si je veux créer le schéma basé sur des instructeurs, des étudiants, des leçons et des réservations de leçons, chacune des tables d'ombrage (instructeurs, étudiants, leçons) serait indépendante l'une de l'autre et relierait via la table de faits? Cela aurait du sens, mais que se passe-t-il si un rapport a été généré affichant les leçons d'un instructeur auquel personne n'a participé? Comment lier un instructeur à une leçon s'il n'y a aucun enregistrement dans la table de faits, car personne n'a participé? – Paul