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

SQL Oracle Discussion :

Clé étrangère sur un ensemble de tables


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 63
    Par défaut Clé étrangère sur un ensemble de tables
    Bonjour,

    J'ai un problème un peu compliqué.

    Je cherche à enregistrer en base (Oracle 11) des états qui concernent un ensemble d'objets hétérogènes.

    Chaque objet est matérialisée par une table avec des champs en communs (les identifiant).

    [ Sous power AMC tous ces objets héritent d'une même classe de base, avec une même clé primaire ]

    J'ai fait une table "Etat" qui donne pour chaque objet une information d'état pour chaque site.

    "Objet" 1..1 --- 0..* "Etat" 0..* --- 1..1 "Site"

    "Etat" a une foreign key sur "Site" et sur "Objet". Seulement "Objet" est matérialisé par plusieurs tables différentes.

    Il faut le maximum de performances possibles car "Etat" a une volumétrie conséquente (de l'ordre de plusieurs millions).

    Je sais que sans la contrainte "foreign key" les performance seraient désastreuses.

    Dois je faire une table "Etat" par "objet", ou bien puis-je conserver une seule table "Etat" associée à toutes les tables (de type objet) ?

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 822
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Dois je faire une table "Etat" par "objet", ou bien puis-je conserver une seule table "Etat" associée à toutes les tables (de type objet) ?
    Même identifiant, champs en commun, même cible de 'foreign key', c'est déjà pour moi plusieurs raisons de penser que c'est une seule table objet, oui. Du moins pour la clé et les champs communs, qu'il y ait d'autre tables en 0..1 pour des infos plus spécialisées, pourquoi pas.

    Au niveau physique, pour les performances, "Objet" peut être partitionné sur la colonne discriminante du type d'objet, et "Etat" aussi peut être partitionnée là dessus si la PK comprends cette colonne discriminante, car alors elle se retrouve en FK dans "Etat". S'il y a des jointures à faire, elles se feront partition par partition.

    -> tous les avantages de factoriser ce qu'il y a en commun au niveau logiques, et tout les avantages de séparer au niveau physique.

    Mais il peut aussi y a voir des raisons pour les séparer: pourquoi avoir choisi de les séparer ?

    Cordialement,
    Franck.

Discussions similaires

  1. Réponses: 5
    Dernier message: 16/07/2011, 16h49
  2. [phpMyAdmin] Clef étrangères sur table d'association
    Par Le Lapin Nesquik dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 24/02/2009, 09h22
  3. 2 Clés étrangères sur une table
    Par adel53 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 25/11/2008, 13h55
  4. Tri sur l'ensemble d'une table sauf premier enregistrement
    Par pierre50 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 14/10/2008, 21h20
  5. erreur sur la clef étrangère à la création de la table
    Par zyriuse dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 21/12/2007, 16h29

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