IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Décisions SGBD Discussion :

Eclaircissement sur les clé dans un DWH(fact table)


Sujet :

Décisions SGBD

  1. #1
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Points : 80
    Points
    80
    Par défaut Eclaircissement sur les clé dans un DWH(fact table)
    salut,

    Supposons que je dispose de se DWH:
    dim_commande(numcde,date)
    dim_client(numclient,nom,prenom,ville,pays)
    dim_vendeur(numvendeur,codechef,nomchef)
    dim_produit(numproduit,nom,description,categorie,descriptionCategorie,prix)
    dim_date(numdate,date,mois,année)
    Fact(numcde,numclient,numvendeur,numproduit,numdate,quantite,total)

    j'aurai voulu savoir ,quand je vais creer mes tables en sql,
    pour mes tables de dimension j'aurai une clé primaire donc je les creerai ainsi:
    create table dim_commande(numcde number(12),date date,
    constraint pf_dim_cde primary key (numcde));
    ...
    et pour ma table de fait,comment je procederai ?
    est ce que je dois rajouter un identifiant qui servira de clé primaire et declarer les clé etrangere comme cela
    create table fact (id number(10),numcde number (12)..........
    constraint pk_fact primary key (id),
    constraint fk_fact foreign key(numcde) references dim_commande(numcde),
    .................
    );

    ou dois je ne pas declaré de clé primaire et juste les clé etrangere
    comme cela
    create table fact (numcde number (12)..........
    constraint fk_fact foreign key(numcde) references dim_commande(numcde),
    .................
    );

    ou encore ,dois je faire une clé primaire composé des clés des tables de dimension ?

    Si quelqu'un qui a eu à realiser des DWH pouvait m'eclaircir cela ;sa me permettrait de mieux comprendre la chose ?

    Merci à tous

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    A priori une clé technique est inutile dans une table de faits, c'est la combinaison des clés étrangères (les dimensions) qui crée la clé primaire, qui, toujours a priori, n'est pas utilisée comme clé étrangère dans une autre table.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 43
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par Médiat
    A priori une clé technique est inutile dans une table de faits, c'est la combinaison des clés étrangères (les dimensions) qui crée la clé primaire, qui, toujours a priori, n'est pas utilisée comme clé étrangère dans une autre table.
    Salut Melvine,

    Quand tu as une seule table de fait entourée par un cercle de dimensions formant un schéma en étoile il n'est pas pertinent d'avoir un ID dans ta table de fait !

    Cependant il existe des situations ou tu risques d'avoir plusieurs tables de faits entourées par un cercle de dimensions, ce qu'on appelle les faits en constellation ( galaxie...), l'utilisation d'un ID est alors utile pour faire le lien entre tes tables de faits. Je donne un exemple :
    Disons que je dispose de deux tables de faits une "Commande" l'autre "Ligne de commande" ( Un modélisateur dimensionnel, les yeux fermés, aurait aplatit tout cela dans une seule table... même si parfois ce n'est pas conseillé). Mais pour les besois de la cause nous avons décidé de garder les deux tables séparées, Dans ce cas de figure un Id dans la table des commandes est trés utile, pour faire le lien avec la table des lignes de commandes...

    A propos dans le modèle de Wal-mart qui est un modèle trés celebre les deux tables (Commande et lignes de commande) ne sont pas aplaties en une seule table. J'imagine donc qu'ils utilisent des ID dans les tables de fait.

    Si tu as d'autres questions n'hésite pas !

  4. #4
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Points : 80
    Points
    80
    Par défaut
    donc je crée une clé primaire composé des clé de mes dimension qui se trouve ds ma table de fait ,?c'est le mieux vous pensez

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 43
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par Melvine
    donc je crée une clé primaire composé des clé de mes dimension qui se trouve ds ma table de fait ,?c'est le mieux vous pensez
    Dans ton cas oui !

Discussions similaires

  1. eclaircissement sur les threads
    Par marocleverness dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 12/07/2009, 10h48
  2. Opérations sur les textures dans pixels shader
    Par ultimanu dans le forum DirectX
    Réponses: 10
    Dernier message: 27/04/2007, 09h32
  3. besoins d'eclaircissements sur les dossiers cron.*
    Par rhaamo dans le forum Administration système
    Réponses: 5
    Dernier message: 23/02/2007, 11h38
  4. VBA Word - Aide sur les "Retours" dans tableaux
    Par wouebmaster dans le forum VBA Word
    Réponses: 5
    Dernier message: 29/12/2005, 10h08
  5. GDI - Travail sur les pixels dans un DIB
    Par jiib dans le forum Windows
    Réponses: 3
    Dernier message: 12/12/2005, 13h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo