schéma de démarrage se compose de deux types de tables tables de fait et dimensions.
L'idéal de la conception en étoile est que vous pouvez diviser vos données en deux parties. La pièce statique est décrite avec les cotes et la partie dynamique (= transactions) dans le tableau de faits.
Chaque transaction est stockée dans la table de faits en tant que nouvel enregistrement et est connectée aux dimensions environnantes qui définissent le contexte de la transaction.
L'exemple dans le lien contient deux tables de faits: SHIPMENTS et PRODUCT_CONDITIONS. Notez que les tables de faits dans le lien sont nommées UNITS_HISTORY_FACT et PRICE_AND_COST_HISTORY_FACT, mais je trouve que ce n'est pas le meilleur choix.
La table SHIPMENTS stocke un enregistrement pour chaque envoi d'un PRODUIT à un CLIENT à un moment donné, via un CANAL défini. Toutes les informations ci-dessus sont définies à l'aide des touches correspondantes des dimensions respectives. La table de faits contient également des MESURES décrivant les attributs de la transaction, ici le nombre d'UNITÉS expédiées.
La structure de la table de fait serait donc
CUSTOMER_ID
PRODUCT_ID
TIME_ID
CHANNEL_ID
UNITS
La deuxième table de fait (en bas) est plus intéressant, car ici vous divisez le produit en deux parties:
dimension produit définissant l'ID , nom et autres attributs statiques
PRODUCT_CONDITION Ceci est une table de faits, conçue dans l'attente que le prix et le coût du produit changeront avec le temps. À chaque modification du prix ou coût insérez un nouvel enregistrement dans la table de faits et connectez-le au PRODUIT et à l'HEURE (de changement).
La structure de la table de faits serait donc
PRODUCT_ID
TIME_ID
UNIT_PRICE
UNIT_COST
Note finale du la conception de la dimension temporelle. La meilleure pratique pour connecter la table de faits avec les tables de dimension est d'utiliser un ID sans signification (clés de substitution), mais pour la dimension TIME, vous devez faire attention.Pour la grande table de faits (partitionnée temporellement) est souvent utilisé la clé naturelle (format DATE) pour pouvoir déployer les fonctionnalités de partitionnement. Voir plus de détails dans How I Defined a Time Dimension Using a Surrogate Key et d'autres ressources dans le web.