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

Développement SQL Server Discussion :

Problème de requête de création de tables


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2010
    Messages : 175
    Par défaut Problème de requête de création de tables
    Bonjour,

    je me tourne vers vous parce que j'ai une erreur lors de l'execution des requêtes ci-jointes:

    Code sql : 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
    CREATE TABLE ListeResponsables (Nom varchar(30),
    				Prenom varchar(30),
    				Email varchar(50) NOT NULL,
    				Validation bit DEFAULT 'false',
    				Actif bit DEFAULT 'true',
    				CONSTRAINT lres_pk PRIMARY KEY(Nom, Prenom));
     
    CREATE TABLE Responsable (DatePeriode datetime FOREIGN KEY REFERENCES Periode(DatePeriode),
    				Matricule varchar(5) FOREIGN KEY REFERENCES Employe(Matricule),
    				Nom varchar(30) FOREIGN KEY REFERENCES ListeResponsables(Nom),
    				Prenom varchar(30) FOREIGN KEY REFERENCES ListeResponsables(Prenom),
    				CONSTRAINT res_pk PRIMARY KEY(DatePeriode, Matricule));
     
    CREATE TABLE Etat (DatePeriode datetime FOREIGN KEY REFERENCES Periode(DatePeriode),
    			Nom varchar(30) FOREIGN KEY REFERENCES ListeResponsables(Nom),
    			Prenom varchar(30) FOREIGN KEY REFERENCES ListeResponsables(Prenom),
    			Statut varchar(8) NOT NULL,
    			CONSTRAINT etat_pk PRIMARY KEY(DatePeriode, Nom, Prenom));

    Msg*1776, Niveau*16, État*0, Ligne*1
    Aucune clé primaire ou candidate dans la table référencée 'ListeResponsables' ne correspond à la liste des colonnes de référence de la clé étrangère 'FK__Etat__Nom__0BE6BFCF'.
    Msg*1750, Niveau*16, État*0, Ligne*1
    Impossible de créer la contrainte. Voir les erreurs précédentes.
    Je ne comprends pas très bien l'erreur étant donné que mes champs existent bel et bien... Si quelqu'un pouvait m'éclairer
    Merci d'avance

    EDIT:
    je viens de trouver
    Code sql : 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
    20
    CREATE TABLE ListeResponsables (Nom varchar(30),
    				Prenom varchar(30),
    				Email varchar(50) NOT NULL,
    				Validation bit DEFAULT 'false',
    				Actif bit DEFAULT 'true',
    				CONSTRAINT lres_pk PRIMARY KEY(Nom, Prenom));
     
    CREATE TABLE Responsable (DatePeriode datetime FOREIGN KEY REFERENCES Periode(DatePeriode),
    				Matricule varchar(5) FOREIGN KEY REFERENCES Employe(Matricule),
    				Nom varchar(30),
    				Prenom varchar(30),
    				CONSTRAINT res_fk FOREIGN KEY (Nom, Prenom) REFERENCES ListeResponsables(Nom, Prenom),
    				CONSTRAINT res_pk PRIMARY KEY(DatePeriode, Matricule));
     
    CREATE TABLE Etat (DatePeriode datetime FOREIGN KEY REFERENCES Periode(DatePeriode),
    			Nom varchar(30),
    			Prenom varchar(30),
    			Statut varchar(8) NOT NULL,
    			CONSTRAINT eta_fk FOREIGN KEY (Nom, Prenom) REFERENCES ListeResponsables(Nom, Prenom),
    			CONSTRAINT eta_pk PRIMARY KEY(DatePeriode, Nom, Prenom));

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Par défaut
    Ton modèle de données n'est pas normalisé. Tu devrais te référer à ces liens avant d'aller plus loin
    (http://sqlpro.developpez.com/cours/standards/#L2 ou http://fsmrel.developpez.com/basesre...?page=sommaire)

    Je te conseille vivement de ne pas créer de primary keys sur des champs tels que nom et prenom, ne serait-ce que pour les homonymes mais également pour de meilleurs performances. Tu répètes le nom et le prénom dans chaque table, ce qui n'est vraiment pas optimal....

  3. #3
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2010
    Messages : 175
    Par défaut
    Les champs nom/prénom m'ont été imposé à vrai dire. Je peux à la limite mettre un id pour améliorer les performances

    Pour la normalisation, on va dire que je suis actuellement en stage et que mon maître de stage m'a demandé de mettre des noms explicites, utilisant les termes de la société donc ça me limite dans le reste des normes

  4. #4
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Bonjour,

    Par curiosité pouvez vous exprimer le rôle de chaque table dans votre cas fonctionnellement parlant ? (Un responsable peut avoir plusieurs employés etc ...)

    ++

  5. #5
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2010
    Messages : 175
    Par défaut
    Citation Envoyé par mikedavem Voir le message
    Bonjour,

    Par curiosité pouvez vous exprimer le rôle de chaque table dans votre cas fonctionnellement parlant ? (Un responsable peut avoir plusieurs employés etc ...)

    ++
    Bonjour,

    La table ListeResponsables contient, comme son nom l'indique, les responsables ayant travaillé dans l'entreprise ('actif' et non 'actif')

    La table Responsable fait le lien entre les salariés et une période donné. Cette table permet de retracer les différents salariés qu'un responsable a eut, retracer les différents responsables qu'un salarié a eut au cours de sa carrière, ...

    La table Etat permet de connaitre l'Etat pour chaque responsable. Pour chaque 'Periode', un responsable reçoit un fichier qu'il doit remplir et le renvoyer. Cette table permet de faire un suivi de l'avancement de chacun

    Il y a encore d'autres tables... Souhaitez vous que je les liste toutes?

  6. #6
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Une question me vient à l'esprit :

    Dans ce cas pourquoi avoir fait une table Responsables et une table salarié ?

    Un responsable n'est il pas un salarié avant tout ?

    ++

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

Discussions similaires

  1. Requête de création de table avec UNION
    Par dut-dut dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 17/07/2008, 20h03
  2. Requête de création de table avec nouveau champs
    Par Lorenzogazier dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 09/06/2008, 15h00
  3. Problème de requête Access sur une table Oracle
    Par Poulki dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 31/01/2008, 16h57
  4. Réponses: 8
    Dernier message: 13/07/2007, 12h19
  5. problème de requête SQL sur 3 tables pour un while
    Par carmen256 dans le forum Requêtes
    Réponses: 3
    Dernier message: 13/04/2006, 16h55

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