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 :

Base de données


Sujet :

Oracle

  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 345
    Par défaut Base de données
    Bonjour svp pourrais-je avoir votre aide sur cet exercice ?

    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
    16
    17
    18
    19
    create table prison
    (
    code_prison integer primary key,
    nom_prison varchar(20) not null,
    ville varchar(20),
    capacité integer not null
    );
     
    create table gardien
    (
    num_employé integer primary key,
    nom varchar(20) not null,
    prénom varchar(30) not null,
    adresse varchar(50) not null,
    salaire float not null,
    couloir varchar(10) not null,
    code_prison integer,
    foreign key (code_prison) references prison(code_prison)
    );
    Maintenant je dois créer la table cellule qui est :
    cellule(num_cellule,couloir,code_prison,nb_lits,surface)

    où num_cellule, couloir et code_prison sont les clés primaires;
    code_prison et couloir sont toutes les deux des clés étrangères :

    Voici ce que j'ai fait mais ça me donne toujours soit cette erreur:
    ora-00907 parenthèse de droite absente ou cette erreur :
    ORA-02270: no matching unique or primary key for this column-list
    et cela quelque soit la modification que je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    create table cellule
    (
    code_prison integer,
    num_cellule integer,
    couloir varchar(6),
    nb_lits integer not null,
    surface float,
    contrainst pk_cellule primary key(code_prison,num_cellule,couloir),
    contrainst fk_prison foreign key(code_prison) references prison(code_prison),
    contrainst fk_couloir foreign key(couloir) references gardien(couloir)
    );
    Merci à ceux qui peuvent m'aider.
    Images attachées Images attachées

  2. #2
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    1) Mettre les balises codes pour que le post soit lisible
    2) Nous dire sur quelle table tu as l'erreur

  3. #3
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    Je pense que l'erreur est la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    contrainst fk_couloir foreign key(couloir) references gardien(couloir)
    );
    Ta foreign key devrait pointer sur une table COULOIR avec comme pk la colonne couloir, et pas sur GARDIEN !
    En effet si tu as plusieurs gardiens par couloir, sur lequel doit pointer la FK ?
    Au pire, mets ton champ couloir de gardien en unique : cela veut par contre dire que tu n'as qu'un gardien par couloir !

    PS : de plus couloir est d'un coté en VARCHAR2(6) et de l'autre en VARCHAR2(10) !
    PS 2 : Un couloir est le couloir d'une prison donnée , donc la foreign key devrait être (prison,couloir) !

  4. #4
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    En toute logique tu devrais avoir une table intermédiaire COULOIR
    avec comme pk (code_Prison, couloir) et comme FK (code_prison) sur PRISON
    Cette table devrait être référencée par les tables GARDIEN et CELLULE par des fk (code_prison,couloir)

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 345
    Par défaut
    au fait c'est un exercice que je cherche à résoudre et on m'a demandé de créer les tables de cette manière, il n'y a pas de table couloir dans mon exercice, alors je me dis qu'il y'a forcement une manière de le faire sous oracle bien que je n'arrive paas à trouver

  6. #6
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 345
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    create table cellule
    (
    code_prison integer,
    num_cellule integer,
    couloir varchar(6),
    nb_lits integer not null,
    surface float,
    contrainst pk_cellule primary key(code_prison,num_cellule,couloir),
    contrainst fk_prison foreign key(code_prison) references prison(code_prison),
    contrainst fk_couloir foreign key(prison,couloir) references (prison,couloir)
    );
    Est-cela que je dois faire ?
    Ça donne toujours rien et je précise bien il n'y pas de table couloir dans l'exercice : regardez par vous-même le fichier joint.
    Images attachées Images attachées

  7. #7
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    ORA-02270: no matching unique or primary key for this column-list
    ce la veut dire que dans GARDIEN les colonnes références doivent être déclarées en UNIQUE (puisque les colonnes référencées ne sont pas les PK)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ALTER TABLE GARDIEN ADD UNIQUE (CODE_PRISON,COULOIR)
      ENABLE VALIDATE

  8. #8
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 345
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE TABLE cellule
    (
    code_prison integer,
    num_cellule integer,
    couloir varchar(6),
    nb_lits integer NOT NULL,
    surface float,
    contrainst pk_cellule PRIMARY KEY(code_prison,num_cellule,couloir),
    contrainst fk_prison FOREIGN KEY(code_prison) REFERENCES prison(code_prison),
    contrainst fk_couloir FOREIGN KEY(prison,couloir) REFERENCES gardien(prison,couloir)
    );
    Pourriez vous vraiment m'aider svp après avoir tut ce que vous dites j'ai des erreurs, là maintenant on me dit :
    ora-00907 parenthèse de droite abs
    ente

  9. #9
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE TABLE cellule
    (
    code_prison integer,
    num_cellule integer,
    couloir varchar(6),
    nb_lits integer NOT NULL,
    surface float,
    contrainst pk_cellule PRIMARY KEY(code_prison,num_cellule,couloir),
    contrainst fk_prison FOREIGN KEY(code_prison) REFERENCES prison(code_prison),
    contrainst fk_couloir FOREIGN KEY(code_prison,couloir) REFERENCES gardien(code_prison,couloir)
    );
    Normalement , le message indique la ligne en erreur !

  10. #10
    Membre éprouvé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2011
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2011
    Messages : 52
    Par défaut
    contrainst ==> constraint

    Franck

  11. #11
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    Citation Envoyé par funoracle Voir le message
    contrainst ==> constraint

    Franck
    damned !!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème Base de données et CRecordSet
    Par LE CHAKAL dans le forum MFC
    Réponses: 3
    Dernier message: 20/08/2002, 11h59
  2. connexion base de donné
    Par saidi dans le forum MFC
    Réponses: 3
    Dernier message: 07/08/2002, 22h22
  3. [Concept] Stabilité d'une base de donnée
    Par lassmust dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 03/07/2002, 16h16
  4. Bases de données
    Par dev dans le forum C++Builder
    Réponses: 4
    Dernier message: 01/07/2002, 22h55
  5. associer une base de données(access) a un dbgrid
    Par ange1708 dans le forum MFC
    Réponses: 3
    Dernier message: 11/06/2002, 12h18

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