Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > ETL
ETL Le Forum d'entraide ETL (Extract Transform Load) et Datawarehouse : DataStage, SunOpsis, Data Integrator, Informatica, OWB, Data Manager, Talend Open Studio,...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/04/2006, 22h17   #1
Membre du Club
 
Inscription : mars 2005
Messages : 277
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 277
Points : 42
Points : 42
Par défaut [DataWareHouse] Comment définir au mieux les clés ?

salut,

Supposons un entrepot de donnée avec une table de fait et 2 dimensions;
Citation:
time(timekey,day,month,year)
item(itemkey,brand,type)
fact(timekey,itemkey,units_sold,avg_sales)
La clé dans ma table fact (timekey,itemkey) forme la clé primaire alors ?
et dans cette meme table je declare timekey et itemkey comme clé etrangere;
Ou je dois inserer une clé (un compteur) en plus et ne pas faire de clé primaire composé ?

Merci
Melvine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2006, 20h29   #2
Membre du Club
 
Inscription : mars 2006
Messages : 43
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 43
Points : 41
Points : 41
Par défaut Clés primaires

Le seul cas ou on doit créer une clé primaire dans une table de fait est lorsqu'on fait des Update sur un fait qui existe déjà, question de performance.

Par ailleur, il faut bien noter qu'il faut créer une clé étrangère vers chaque table de dimension donc :
Une clé etrangère sur la colonne timekey vers la dimension Time
Une clé étrangère sur la colonne ItemKey vers la dimension Item.

D'autre part, en général lorsqu'on utilise un bon SGBD comme Oracle, on doit créer un index bitmap pour chaque colonne de clé étrangère, question de performance encore.

D'autant plus qu'il conseillé de "Disabler" les indexes et les clés étrangères lorsqu'on fait le chargement de la table de fait, quand il y'a une grande quantité de données à charger, et les "enabler" une fois terminé. Toujours dans une optique d'avoir une bonne performance.


www.systemeetl.com
Tout sur les systèmes ETL, La modélisation dimensionnelle est les entrepôts de données.
abdelelomari est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2006, 11h51   #3
Membre du Club
 
Inscription : mars 2005
Messages : 277
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 277
Points : 42
Points : 42
donc si je comprends bien,mes table de dimension contiendront une clé primaire ce qui est logique;mais ma table de fait n'en contiendra pas et contiendra seulement des clé etrangeres,que je devrai indexer pour raison de performance,car oracle ne les index pas automatiquement ?
Melvine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2006, 17h40   #4
Membre du Club
 
Inscription : mars 2006
Messages : 43
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 43
Points : 41
Points : 41
Oui, et en plus tes indexe devraient être de type bitmap ! c'est encore plus performant !

Voila !
abdelelomari est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2006, 19h13   #5
Membre du Club
 
Inscription : mars 2005
Messages : 277
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 277
Points : 42
Points : 42
Est ce obligé d'inserer des clés de substitution dans les dimension ?
Melvine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2006, 19h47   #6
Membre du Club
 
Inscription : mars 2006
Messages : 43
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 43
Points : 41
Points : 41
Pour répondre à ta question je te refere aux liens suivants :
Pour la structure de base d'une dimension :
http://www.systemeetl.com/def_dim.htm

Pour définir les composantes d'une dimension
http://www.systemeetl.com/def_dim_suite_1.htm

Pour un exemple de migration d'une dimension d'un système opérationnel à un DW :
http://www.systemeetl.com/def_dim_suite_2.htm

Si tu as d'autres questions n.hésites pas !
abdelelomari est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2006, 20h42   #7
Membre du Club
 
Inscription : mars 2005
Messages : 277
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 277
Points : 42
Points : 42
la clé naturelle correspond à la clé primaire
et la clé de substitution est une clé qu'on rajoute à table de dimension
Le truc que je ne comprends pas,c'est en quoi elle est utile ?elle est numerique comme la clé primaire donc pourquoi avoir 2clés ?
Melvine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2006, 20h58   #8
Membre du Club
 
Inscription : mars 2006
Messages : 43
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 43
Points : 41
Points : 41
Fonctionnalités d’une clé de substitution

§ Remplacer la clé artificielle ou naturelle : Effectivement une clé de substitution remplace la clé artificielle en terme d’utilisation, ce n’est plus la clé naturelle qui sera utilisé pour faire les jointures avec les tables de faits ou les autres tables de dimension (niveaux hiérarchiques dans le cas d’une dimension en flocons de neiges)



§ Compléter l’information : La clé de substitution n’a aucun sens en terme d’affaire, elle est utilisée dans l’entrepôt de données seulement ! et on aura toujours besoin de la clé artificielle ou naturelle dans la dimension pour pouvoir faire la correspondance entre l’élément de dimension (un client par exemple) dans l’entrepôt de données et l’élément de la table des clients dans le système opérationnel.



Avantages d’utiliser une clé de substitution (Surrogate key) :

§ Performance : Accélère l’accès aux données du moment ou l’on va utiliser un index numérique vu que le type de données de la clé de substitution est numérique.

§ Indépendance du système source : On ne peut garantir que la clé d’affaire ne change pas dans les systèmes sources.

§ Historique des changements et granularité infinie : Si l’on désire garder l’historique des changements de la dimension selon certains critères (SCD) nous devons gérer la clé de substitution. Nous nous retrouverons facilement avec plusieurs enregistrements de la même clé d’affaire dans la dimension.
abdelelomari est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2006, 18h11   #9
Membre du Club
 
Inscription : mars 2005
Messages : 277
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 277
Points : 42
Points : 42
je pense pas que c'est tres utiliser au niveau professionnel les clé de substitution;j'imagine qu'on prefere garder les clé d'origine
Melvine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2006, 02h43   #10
Membre du Club
 
Inscription : mars 2006
Messages : 43
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 43
Points : 41
Points : 41
C'est plutot le contraire... On garde les clés naturelles et on ajoute les clés de substitution .
abdelelomari est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2006, 12h50   #11
Membre habitué
 
Inscription : janvier 2004
Messages : 507
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 507
Points : 101
Points : 101
donc si j'ai bien compris dans cette table de fait
fact(timekey,itemkey,units_sold,avg_sales)
je dois creer une clé;et avoir une table de ce genre
fact(id,timekey,itemkey,units_sold,avg_sales)
???
donny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2006, 09h35   #12
Membre habitué
 
Inscription : janvier 2004
Messages : 507
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 507
Points : 101
Points : 101
donny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2006, 02h15   #13
Membre du Club
 
Inscription : mars 2006
Messages : 43
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 43
Points : 41
Points : 41
Citation:
Envoyé par donny
donc si j'ai bien compris dans cette table de fait
fact(timekey,itemkey,units_sold,avg_sales)
je dois creer une clé;et avoir une table de ce genre
fact(id,timekey,itemkey,units_sold,avg_sales)
???
Dans ce cas de figure on n'a pas besoin de l'ID dans la table de fait !
donc ton fact sera composé de (timekey,itemkey,units_sold,avg_sales).

Voila !
abdelelomari est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h58.


 
 
 
 
Partenaires

Hébergement Web