Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
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 15/06/2005, 10h47   #1
Membre du Club
 
Avatar de greg64
 
Inscription : juin 2005
Messages : 154
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 154
Points : 68
Points : 68
Par défaut clés étrangères

comment dois je faire sur phppgadmin pour que mes clés étrangéres ne soient pas saisies sur la table car ma cardinalité est 0,1
greg64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2005, 18h18   #2
Membre régulier
 
Avatar de champijulie
 
Inscription : mai 2005
Messages : 147
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 147
Points : 92
Points : 92
Pourrais-tu être un peu plus précis? Je ne vois pas de quelle cardinalité tu parles.
@+
champijulie
champijulie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2005, 22h23   #3
Candidat au titre de Membre du Club
 
Inscription : octobre 2004
Messages : 13
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 13
Points : 13
Points : 13
Evidemment moi aussi je ne vois pas de quoi tu veux parler.
ohini est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2005, 16h20   #4
Candidat au titre de Membre du Club
 
Inscription : octobre 2004
Messages : 13
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 13
Points : 13
Points : 13
Tu peux créer une table auxiliaire pour enregistrer tes clés.
Supposons les tables Pere(NP) et Enfants(NE) la table Estenfant associant les deux auront pour clés NP et NE.
Si la cardinalite est de o,1 comme ici latable Estenfant aura seulement pour clé NE car un enfant as un seul père.

create table Pere (
NP serial primary key,
nom varchar[20]);

create table Enfant (
NE serial primary key,
prenom varchar);

create table Estenfant (
NE integer references Enfants(NE) primary key,
NP integer references Pere(NP));
ohini est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2005, 10h50   #5
Membre du Club
 
Avatar de greg64
 
Inscription : juin 2005
Messages : 154
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 154
Points : 68
Points : 68
Par défaut repondre

dans mon schéma entité association mes cardinalités entre deux table sont 0,n et 0,1.
donc dans mon schéma relationnel la clé primaire de lune de mes tables devient clé étrangère de lautre.
mais comme la cardinalité est 0,1 et non pas 1,1 sa valeur n'est donc pas obligatoire.
comment puis je faire

merci

jespere que vous comprenez
greg64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2005, 14h37   #6
Candidat au titre de Membre du Club
 
Inscription : octobre 2004
Messages : 13
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 13
Points : 13
Points : 13

Supposons que c'est la table2 qui a le cardinal 0,1 et que le nom de la clé de la table1 est id. Que la colonne qui doit normalement etre clé étrangère dans table2 porte le même nom id mais ne réfference pas la table1.
Crée une fonction trigger avec les contraintes suivantes:
check(id='' or id= (select id from table1))
Crée ensuite un trigger qui va maintenant s'appliquer sur la table2
create trigger verification
after insert or update on table2
for each row execute fonctiontigger;
ohini est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2005, 18h23   #7
Membre à l'essai
 
Inscription : janvier 2005
Messages : 38
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : janvier 2005
Messages : 38
Points : 24
Points : 24
Envoyer un message via MSN à moog
Sur cet exemple la cardinalité de la relation categorie /produit
est 0,1

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
CREATE TABLE categorie
(
  cat_id serial NOT NULL,
  cat_label varchar,
  CONSTRAINT categorie_pkey PRIMARY KEY (cat_id)
) 
 
CREATE TABLE produit
(
  pro_id serial NOT NULL,
  pro_label varchar,
  cat_id int4,
  CONSTRAINT produit_pkey PRIMARY KEY (pro_id),
  CONSTRAINT "$1" FOREIGN KEY (cat_id) REFERENCES categorie (cat_id) ON UPDATE RESTRICT ON DELETE CASCADE
)
Dans ce cas tu peux faire un INSERT dans la table produit
- si cat_id existe dans la table categorie
ou
- si cat_id est NULL

Si tu veux faire une relation 1,1 entre les 2 tables il faudrait spécifier pour la table produit
Code :
1
2
 
  cat_id int4 NOT NULL

Dans ce cas tu peux faire un INSERT dans la table produit uniquement si cat_id existe dans la table categorie.

J'espere avoir répondu a ta question


Moog
moog 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 17h08.


 
 
 
 
Partenaires

Hébergement Web