|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||
|
Nouveau Membre du Club
![]() Inscription : novembre 2010 Messages : 146 ![]() |
Bonjour, j'ai un difficulté à créer ma clé étrangère
voici 2 tablse : Code :
Code :
je souhaite créer une clef étrangère sur la table personnes de la colonne civillite , sa clef primaire sera id_civile voici la requête que j'ai faite Code :
![]() Code :
1 ma nomination de la clé étrangère est-elle bonne ? 2 que faut-il modifier pour que cela fonctionne ? je vous remercie d'avance de vos aides |
||||||||
|
|
00
|
|
|
#2 |
![]() ![]() |
D'après la définition que tu donnes de ta table civilite, elle n'a pas de clé primaire.
De plus, il faut créer ta clé étrangère dans la table personne et non pas dans la table civilite. Au passage, on écrit en principe les noms de tables et de colonnes au singulier. Bref, tu peux recommencer ! ![]() Et puisque tu travailles avec Postgresql, ce qui est un très bon choix, utilise PGAdmin, c'est plus facile.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#3 | ||||||
|
Nouveau Membre du Club
![]() Inscription : novembre 2010 Messages : 146 ![]() |
merci cinePhile
Code :
pour mieux le voir si je les mets en majuscule les noms des tables ? Code :
j'utilise PGAdminIII voici ce que j'ai fait je clique sur la table personnes en dessous je clique sur l’icône rouge (les flèches opposées rouges), clic droit ajouter une clé étrangère dans onglet propriété je sélectionne la table de référence qui est civilites (je corrigerai plus tard pour le s) dans onglet colonne , onglet Code :
veillez indiquer le nom d'index qui doit être index ? penses-tu que j'ai fait cela à l'envers ? |
||||||
|
|
00
|
|
|
#4 | |||
![]() ![]() |
Citation:
Ca devrait être "civilite" puisque c'est comme ça que ça s'appelle en français. Quant au singulier, ça vient de la lecture des modèles conceptuels de données. Le cheminement de conception est le suivant : 1) Règle de gestion Une personne est qualifiée par une seule civilité et une civilité peut qualifier plusieurs personnes. => tout est au singulier. 2) MCD civilite -0,n----Qualifier----1,1- personne => tout est au singulier. 3) Tables civilite (civ_id, civ_libelle) personne (prs_id, prs_id_civilite...) => tout est au singulier. Citation:
Pour le reste, tu as peut-être tout simplement oublié ceci : Citation:
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|||
|
00
|
|
|
#5 | ||
|
Nouveau Membre du Club
![]() Inscription : novembre 2010 Messages : 146 ![]() |
j'ai fait un screen shoot normalement il y a toutes les informations que
civlite a une clef primaire sur civ_id Code :
![]() dans l'onglet propriégé a quoi sert couverture de l'index ? et la case FK_auto ? et faut t'il remplire la case nom (image de gauche n'est pas bonne)
|
||
|
|
00
|
|
|
#6 |
![]() ![]() |
Il faut que la colonne portant la clé étrangère dans la table personne soit indexée pour pouvoir servir de clé étrangère.
D'après ton image, il n'y a pas d'index, hormis la clé primaire, dans les deux tables.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
10
|
|
|
#7 |
|
Nouveau Membre du Club
![]() Inscription : novembre 2010 Messages : 146 ![]() |
merci beaucoup à toi, maintenant cela fonctionne , je ne savais pas qu'il fallait indexer ce champ,et si j'indexais tous lse champs de mes champs ? cela servirait à quelque chose ?
|
|
|
00
|
|
|
#8 |
![]() ![]() |
Pour savoir quoi indexer, va faire un tour chez SQLPro. Trop d'index tue l'indexation et nuit aux performances.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
Copyright © 2000-2012 - www.developpez.com