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 une Vue


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 224
    Par défaut Clé étrangère sur une Vue
    Bonjour,

    j'ai un problème de conception de base de données:

    Je veux créer une table Exposure composée des colonnes:
    ExposureType (FK on AssetInfo) - ExposureTypeValue(FK à determiner) - ExposureValue (number)- DateVal (date)

    ExposureType est une clé étrangère sur une table AssetInfos qui contient:
    ID - Value où Value correspond à un type d'exposition possible (CURRENCY, NATURE, etc...)

    Il existe n tables Currency, Nature etc qui contiennent aussi ID - Value
    Dans Currency il peut y avoir: EUR, GBP, USD etc.
    Dans Nature il peut y avoir: EQUITY, BONDS, FX etc..


    Je veux que dans ExposureTypeValue je puisse avoir EUR, GBP, USD mais aussi EQUITY, BONDS, FX suivant si ExposureType est de Type CURRENCY ou NATURE.
    Je voudrais mettre une contrainte sur ExposureTypeValue pour dire que mes valeurs possible sont celles presentes dans les tables Currency ou Nature ou autres (un nombre de table supposées infinies)

    J'avais pensé réalisé une View listant l'ensemble des ExposureTypeValue possible et la mettre en clé étrangère.
    Or c'est impossible (enfin d'après ce que j'ai compris)

    Donc que faire? Comment puis limiter les valeurs de ExposureTypeValue à des valeurs présentes dans des tables différentes.

    PS: Je ne peux modifier la structure des tables existantes.

    Merci de votre aide.

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    c'est à l'application de gérer ces contraintes complexes, ceci étant un FK sur ExposureTypeValue ne sera de toutes façon pas inutile (même si j'ai bien compris que ça n'était pas suffisamment limitant).

  3. #3
    Membre émérite Avatar de philcero
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 528
    Par défaut
    De mon point de vue, revoie la conception et utilise DEUX tables, une pour le enregistrements de type CURRENCY (exposure_cur) et une deuxième pour les enregistrements de type NATURE (exposure_nat). Là tes contraintes sont faciles à mettre en place.

    Ensuite rien ne t'empêche de créer une VIEW (exposure) étant la concaténation des deux.

    Par définition les champs d'une base sont typés, cela ne veut pas seulement dire que tel ou tel champs est simplement NUMBER ou CHAR, cela veut dire que la logique interne/applicative, que le SGBDR ne peut donc vérifier, doit également répondre de ces mêmes lois à son niveau.

    Bref un problème de conception...

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Citation Envoyé par philcero Voir le message
    De mon point de vue, revoie la conception et utilise DEUX tables, une pour le enregistrements de type CURRENCY (exposure_cur) et une deuxième pour les enregistrements de type NATURE (exposure_nat). Là tes contraintes sont faciles à mettre en place.
    Faut juste pas que le type soit modifiable dans l'appli sinon merci l'usine à mazout

    Tout simplement, le SGBD n'a pas à prendre en charge les contraintes fonctionnelles selon moi

  5. #5
    Membre émérite Avatar de philcero
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 528
    Par défaut
    Tout simplement, le SGBD n'a pas à prendre en charge les contraintes fonctionnelles
    Pas faux, je dirais même pas si injuste que ça...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 224
    Par défaut
    Je prefere ton idée orafrance, c'est moins compliqués à mettre en place

    Je laisse ouvert au cas ou qqun a une autre idée.

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 270
    Par défaut
    Fais une table de reference unique.


    Table de ref
    (code varchar2(..), -- valeurs possible EUR,GBP,USD… EQUITY, BONDS, FX…
    ExposureType varchar2(…) -- valeurs possible Nature, Currency,…
    -- la primary key est sur les 2 colones
    )

    Table Exposure
    (ExposureType varchar2(..),
    Exposure type value varchar2(..)
    Exposure value number,

    )

    La clef étrangère est sur code et exposure type de la table de ref.

Discussions similaires

  1. Clé étrangère sur une vue
    Par lcaya dans le forum SQL
    Réponses: 9
    Dernier message: 07/07/2010, 11h04
  2. modéliser une table mapping ayant des clés étrangères sur des vues
    Par touftouf57 dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 19/06/2010, 02h04
  3. [2008] Clé étrangère sur une vue ?
    Par TeK55 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 22/07/2009, 14h17
  4. Temps d'execution d'un select sur une vue
    Par rosewood dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 21/02/2005, 16h06
  5. delete sur une vue: rule
    Par Bouboubou dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 18/05/2004, 18h58

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