Clés artificielles

Méthode

Pour introduire des clés artificielles pour identifier les dimensions :

  • Dans la zone de transformation :

    • ajouter à chaque dimension un attribut pk

    • ajouter une méthode getPk() qui renvoie pk

    • (supprimer la méthode qui renvoyait initialement la clé naturelle si elle n'est plus nécessaire par ailleurs)

  • À chaque ajout d'un nouvel enregistrement dans une dimension

    • générer une clé artificielle dans pk (à l'aide d'une séquence par exemple)

  • Lors de l'ajout des dimensions dans le data warehouse

    • utiliser getPk() pour identifier les enregistrements

  • Lors de l'ajout des faits, il faut substituer les clés

    • joindre les faits avec les dimensions

    • appeler les méthodes getPk() de chaque dimension

Exemple

1
INSERT INTO dw_facts
2
SELECT d1.pk(), d2.pk()
3
FROM t_fact f, t_dim1 d1, t_dim2 d2
4
WHERE f.a=d1.a AND f.b=d1.b

Attention

Il faut mémoriser la correspondance entre la clé identifiant la dimension dans le système transactionnel et la clé artificielle dans le data warehouse.

Pour cela :

  • soit les tables sont persistantes dans la zone T

  • soit les clés du système transactionnel doivent être conservées dans le DW

AttentionOptimisation

  • Les jointures à présent nécessaires diminuent les performances de chargement

  • Une indexation adéquate est requise

Rappel

Les faits n'ont pas besoin d'être identifiés.

ComplémentOID

Sous Oracle en RO, il est possible d'utiliser les OID à la place de clés artificielles.

Le problème sera que les OID ne sont connus qu'après insertion dans la DB, ils ne peuvent être créés dans la BDT puis transféré dans le DW.

  • Il faut déclarer les tables du DW en mode RO, en conservant les clés d'origine

  • Puis substituer les clés étrangères par des REF dans la table des faits, en faisant la jointure entre la table des faits de la BDT avec les dimensions du DW