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
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
Pourrais-tu être un peu plus précis? Je ne vois pas de quelle cardinalité tu parles.
@+
champijulie
Evidemment moi aussi je ne vois pas de quoi tu veux parler.
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));
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
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;
Sur cet exemple la cardinalité de la relation categorie /produit
est 0,1
Dans ce cas tu peux faire un INSERT dans la table produit
Code : 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 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 )
- 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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager