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

Requêtes PostgreSQL Discussion :

Erreur lors de la création de table


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre régulier
    Homme Profil pro
    Autre
    Inscrit en
    Mars 2021
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mars 2021
    Messages : 201
    Points : 92
    Points
    92
    Par défaut Erreur lors de la création de table
    Bonjour,

    je suis débutant en SQL, en utilisant un schéma relationnel je dois créer une base de donnée. Lors de la création de mes tables j'ai une erreur et j'ai du mal à trouver la solution :
    il n'existe aucune contrainte unique correspondant aux clés données pour la table « inscription » référencée

    Nom : IMG_0965.jpg
Affichages : 153
Taille : 55,9 Ko

    En suivant ce schéma ma table inscription est la suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE inscription
    (
    	annee       INTEGER,
    	id_auditeur INTEGER ,
    	id_tarif    INTEGER,
    	PRIMARY KEY (annee, id_auditeur),
    	CONSTRAINT fk_inscrip_audit FOREIGN KEY (id_auditeur) REFERENCES auditeur(id_auditeur),
    	CONSTRAINT fk_inscrip_tarif FOREIGN KEY (id_tarif) REFERENCES tarif(id_tarif)
    );
    j'ai essayé d'attribuer seulement à la colonne annee la clé primaire mais lorsque j'importe les valeur j'ai des erreurs du aux doublons (plusieurs annee 2004)
    Merci pour votre aide et je vous souhaite une bonne journée

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 134
    Points : 38 557
    Points
    38 557
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Avec le message d'erreur exact, ce serait plus facile de vous aider

    Avez-vous bien créé les tables AUDITEUR et TARIF avant de créer cette table ?
    Il faut d'abord créer les tables qui possèdent les identifiants avant de créer celles qui y font référence.

    Par ailleurs, vous avez inversé l'ordre des colonnes de la PK par rapport à ce qui est demandé dans l'énoncé.

    Enfin, une PK est forcément unique, il n'est donc pas nécessaire d'ajouter une contrainte unique explicite puisque celle-ci est implicite

  3. #3
    Membre régulier
    Homme Profil pro
    Autre
    Inscrit en
    Mars 2021
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mars 2021
    Messages : 201
    Points : 92
    Points
    92
    Par défaut message erreur
    Bonjour,
    je vous remercie de me consacrer du temps
    mon message d'erreur est le suivant :

    ERROR: ERREUR: il n'existe aucune contrainte unique correspondant aux clés données pour la table « inscription » référencée
    SQL state: 42830

    Oui j'ai crée les autres tables en premier je suis vraiment débutant j'ai crée vraiment sur du basique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE auditeur
    (
    	id_auditeur INTEGER PRIMARY KEY,
    	nom         VARCHAR (20),
    	prenom      VARCHAR (20),
    	date_nais   DATE
    );
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE ue
    (
    	id_ue		VARCHAR (10) PRIMARY KEY,
    	designation VARCHAR (200),
    	ects		INTEGER
    );
    ----------------------------------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE tarif
    (
    	id_tarif	INTEGER PRIMARY KEY,
    	tarif       VARCHAR (50)
    );
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE inscription
    (
    	id_auditeur INTEGER ,
    	annee       INTEGER,
    	id_tarif    INTEGER,
    	PRIMARY KEY (annee, id_auditeur),
    	CONSTRAINT fk_inscrip_audit FOREIGN KEY (id_auditeur) REFERENCES auditeur(id_auditeur),
    	CONSTRAINT fk_inscrip_tarif FOREIGN KEY (id_tarif) REFERENCES tarif(id_tarif)
    );
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE TABLE inscrire
    (
    	id_auditeur INTEGER,
    	annee		INTEGER,
    	id_ue		VARCHAR (10),
    	note1       INTEGER,
    	note2		INTEGER,
    	PRIMARY KEY(id_auditeur, annee, id_ue),
    	CONSTRAINT fk_inscrire_inscription FOREIGN KEY (annee) REFERENCES inscription(annee),
    	CONSTRAINT fk_inscrire_ue FOREIGN KEY (id_ue) REFERENCES ue(id_ue),
    	CONSTRAINT fk_inscrire_audit FOREIGN KEY (id_auditeur) REFERENCES auditeur(id_auditeur)
     
    );
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE reglement
    (
    	id_auditeur INTEGER,
    	annee		INTEGER,
    	num_ordre	INTEGER,
    	montant		NUMERIC(7, 2),
    	PRIMARY KEY(id_auditeur, annee, num_ordre),
    	CONSTRAINT fk_regl_audit FOREIGN KEY (id_auditeur) REFERENCES auditeur(id_auditeur),
    	CONSTRAINT fk_regl_inscrip FOREIGN KEY (annee) REFERENCES inscription(annee)
    );

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 134
    Points : 38 557
    Points
    38 557
    Billets dans le blog
    9
    Par défaut
    La ligne en erreur est donc celle-ci :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    CONSTRAINT fk_inscrire_inscription FOREIGN KEY (annee) REFERENCES inscription(annee)
    en effet, l'année seule n'est pas unique dans la table inscription, il faut y ajouter la colonne id_auteur

    Et encore une fois, dans l'énoncé, on demande que la PK de inscription soit id_auteur+annee et non pas annee+id_auteur
    L'ordre des colonne a son importance

  5. #5
    Membre régulier
    Homme Profil pro
    Autre
    Inscrit en
    Mars 2021
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mars 2021
    Messages : 201
    Points : 92
    Points
    92
    Par défaut
    merci j'y ai passé 2 après midi... tout marche
    je vous remercie de m'avoir consacré du temps
    j'ai aussi inversé id_auditeur + annee comme vous m'avez fait remarquer je croyais qu'il n'y avait pas d'importance
    bonne journée

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 134
    Points : 38 557
    Points
    38 557
    Billets dans le blog
    9
    Par défaut
    Vus pouvez modifier votre précédent message pour corriger, il y a un bouton prévu à cet effet

    Concernant l'ordre des colonnes d'un index, il faut savoir que
    - si on utilise systématiquement les deux colonnes pour rechercher la ligne, alors l il est préférable de mettre la colonne la plus discriminante en 1er
    - si on utilise parfois une seule des deux colonnes, alors la colonne utilisée seule doit être déclarer en premier, ou alors il faut créer un autre index pour la colonne seule.

    A noter : pour l'index cluster, si on fait souvent un parcours séquentiel d'un groupe de lignes pour un critère, il est intéressant d'avoir ce critère en première position de l'index (index scan)

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

Discussions similaires

  1. [Python 3.X] erreur lors de la création des tables dans la base des données
    Par anmatheL dans le forum Django
    Réponses: 1
    Dernier message: 20/01/2021, 09h15
  2. [Doctrine] Schema.yml, erreur lors de la création des tables
    Par richard_m dans le forum ORM
    Réponses: 16
    Dernier message: 23/02/2011, 16h58
  3. [MySQL] Erreur lors de la création d'une table avec mysql
    Par zemzoum89 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 14/05/2010, 01h03
  4. Erreur lors de la création de ma table
    Par phfle1 dans le forum Débuter
    Réponses: 2
    Dernier message: 10/05/2010, 15h04
  5. Erreur lors de la création d'une table
    Par 4rocky4 dans le forum Administration
    Réponses: 11
    Dernier message: 11/06/2009, 15h43

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