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

Oracle Discussion :

[PL/SQL] : Contrainte d'intégrité


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 175
    Par défaut [PL/SQL] : Contrainte d'intégrité
    Bonjour,

    je n'arrive pas à mettre en place une contrainte d'intégrité.Voilà ce que je veux faire :

    Supposons que j'ai deux tables d'utilisateurs "uti1" et "uti2" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    CREATE TABLE uti1
    (
       login CHAR(8) NOT NULL,
       nom VARCHAR(40),
       prenom VARCHAR(20),
       CONSTRAINT PK_uti1 PRIMARY KEY (login)
    );
     
    CREATE TABLE uti2
    (
       login CHAR(8) NOT NULL,
       nom VARCHAR(40),
       prenom VARCHAR(20),
       CONSTRAINT PK_uti2 PRIMARY KEY (login)
    );
    et une troisème table "matable"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE matable
    (
       id NUMBER(10) NOT NULL,
       login CHAR(8),
       CONSTRAINT PK_matable PRIMARY KEY (id)
    );
    Je souhaite ajouter une contrainte d'intégrité permettant de vérifier que matable.login soit obligatoirement soit dans uti1 OU soit uti2.

    Je pensais mettre une FOREIGN KEY du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CONSTRAINT FK_matable FOREIGN KEY (login) REFERENCES uti1(login) OR uti2(login)
    mais ça ne marche pas.

    Pouvez-vous m'aider ?

    Merci et bonne journée.

  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
    impossible... et sur le plan de la conception ça me parait étrange... tu veux pas nous expliquer le but de la manoeuvre ?

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 175
    Par défaut
    Bonjour,

    la table uti1 contient des individus
    la table uti2 contient des sociétés

    Sémantiquement parlant je ne peux pas mettre les individus et les sociétés dans la même table.

    la table "matable" doit certains cas faire référence à un individu mais dans d'autres à une société.

    En plus de la contrainte d'intégrité que je tente de mettre en place, je devrai m'assurer qu'aucun login d'individu ne correspond à un login de société

  4. #4
    Membre Expert
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Par défaut
    Ne cherche plus ça n'existe pas ce genre de contrainte... tu peux le faire par un trigger si tu veux. Mais conceptuellement comme dit fred, ce n'est pas conforme non plus, normalement, tu met 2 colonnes, une qui pointe vers uti1 et une vers uti2.

    Une illustration comme quoi ce n'est pas correct, c'est qu'arrive-t-il si un login et à la fois sur uti1 et sur uti2 (ce qui autorisé à priori) ?

  5. #5
    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 dcollart
    Sémantiquement parlant je ne peux pas mettre les individus et les sociétés dans la même table.
    pourquoi donc... une personne morale ou physique reste des personnes... à mon avis c'est un défaut dans le modéle qui te contraindra à faire des UNION ALL quand une colonne pour catégoriser le type d'individu suffirait

Discussions similaires

  1. Merise : Contrainte d'intégrite fonctionnelle
    Par new_wave dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 22/06/2022, 11h51
  2. langage SQL contrainte d'intégrité
    Par nasroman dans le forum Langage SQL
    Réponses: 1
    Dernier message: 09/05/2010, 19h43
  3. [AC-2003] contrainte d'intégrité reférentielle avancée SQL
    Par vincenzio dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 27/07/2009, 14h43
  4. [debutant] Contraintes d'intégrité définies sur un objet
    Par maysa dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/05/2004, 14h57
  5. Question sur les contraintes d'intégrités
    Par eGGyyS dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 27/04/2004, 13h51

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