Précédent   Forum des professionnels en informatique > Bases de données > Décisions SGBD
Décisions SGBD Forum de décisions sur le choix en bases de données. Le Comparatif
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/07/2006, 17h31   #1
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 110
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 110
Points : 26
Points : 26
Par défaut Clé étrangère et/ou primaire

Bonjour à tous,

Je suis en train de concevoir une petite application (ma première en fait), et je compte utiliser un serveur Postgresql. Je viens de me rendre compte que dans l'une de mes tables j'aurais besoin qu'une de mes clés étrangères soit aussi primaire, ou tout au moins unique.

Déja, est-ce possible?

Et ne vaudrait-il mieux pas créer une clé primaire et m'assurer (je ne sais pas trop comment, je croix que les contrainte le peuvent, mais je n'ai pas bien compris) que la valeur de cette clé etrangère restera bien unique dans la table?

D'avance merci beaucoup pour toute suggestion et conseils
scolyo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 18h00   #2
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 446
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 446
Points : 7 546
Points : 7 546
Je suppose que cette clé étrangère unique n'est pas obligatoire, sinon il suffirait de placer un index unique sur cette clé pour créer la contrainte d'unicité.
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 18h01   #3
Membre habitué
 
Avatar de fomazou
 
Inscription : mars 2004
Messages : 212
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 212
Points : 101
Points : 101
Envoyer un message via ICQ à fomazou
Par défaut clés primaires/étrangeres

une clé primaire est unique dans une table et les clés étrangère reférence seulement d'autres tables, elles sont en faites des clés primaires de ces tables.
__________________
"le temps c'est le meilleur des médécins, peut être aussi le meilleur des assassins" Bernis-Francine
fomazou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 18h35   #4
Inactif
 
Avatar de Médiat
 
Inscription : décembre 2003
Messages : 1 946
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 1 946
Points : 1 932
Points : 1 932
Citation:
Envoyé par al1_24
Je suppose que cette clé étrangère unique n'est pas obligatoire, sinon il suffirait de placer un index unique sur cette clé pour créer la contrainte d'unicité.
?
A ma connaissance il n'y a aucune obligation qu'une colonne soit NOT NULL pour créer un index unique dessus.
Médiat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/07/2006, 09h13   #5
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 110
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 110
Points : 26
Points : 26
Heu, je ne me suis peut-etre pas bien expliqué, en fait mon problème est de m'assurer de l'unicité d'une clé étrangère, donc je me demandais si il était possible à une clé de cumuler les "propriétés" étrangère et primaire, ou si j'avais commis une erreur de conception.
scolyo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/07/2006, 09h22   #6
Inactif
 
Avatar de Médiat
 
Inscription : décembre 2003
Messages : 1 946
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 1 946
Points : 1 932
Points : 1 932
Ta clé est primaire ou elle ne l'est pas, si elle est aussi étrangère, cela veut dire que deux tables ont la même clé... bizarre.

Rien ne t'empèche de déclarer un index unique sur une clé étrangère.
Médiat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/07/2006, 09h33   #7
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 110
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 110
Points : 26
Points : 26
Merci, c'est la réaction que j'attendais, je me retrouve bien avec deux tables partageant la même clé primaire. Je ne connais pas bien les sgbdr, mais ça ne me semble pas trop normal. En fait, j'ai éclaté une table en deux pour des problèmes de droit d'accès. Certaine données peuvent être consulté par tout le monde, par contre d'autre sont confidentielles. Ce qui aurait été bien, c'est un sgbdr qui gère les droit d'accès differemment, mais j'ai pas les moyens de m'offrir oracle

Y'a t-il un moyen de faire "plus propre" que le coup de la clé étrangère avec un index unique, ou bien j'ai pas le choix?
scolyo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/07/2006, 10h17   #8
Inactif
 
Avatar de Médiat
 
Inscription : décembre 2003
Messages : 1 946
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 1 946
Points : 1 932
Points : 1 932
Normalement, pour gérer des problèmes de droit d'accès différenciés, tu crées des vues et tu donnes les droits sur les vues au lieu de les donner sur les tables.
Médiat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/07/2006, 11h43   #9
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 110
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 110
Points : 26
Points : 26
Ok, merci beaucoup, ça va me simplifier le boulot

a bientot
scolyo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h22.


 
 
 
 
Partenaires

Hébergement Web