[PostgrSQL 8.4 - pgAdmin 3 - OSX 10.6]
Bonjour à tous,
Décidément, ces derniers jours je poste beaucoup. Avant de migrer vers PostgreSQL, j'utilisais MySQL. Celui-ci possède un type de donnée qui s'appelle "enum".
Celui-ci me permettait d'avoir le choix d'une valeur dans une liste qui se déroulait. C'est très pratique pour savoir directement ce qu'on a comme choix et ne pas perdre de temps à se faire ramoner pour viol de contrainte.
Alors, pour contourner le problème j'ai créé d'autres tables pour simuler cet "enum". De par les lectures que j'ai eues, il semble que c'est là le moyen le plus propre de procéder.
Voici une base de donnée factice, dont le but est de savoir si un individu a des cheveux et de définir leur couleur:
liée à ces deux tables ci dessous:
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
17
18
19
20
21
22
23
24
25
26
27
28
29 -- Table: test."Table1" -- DROP TABLE test."Table1"; CREATE TABLE test."Table1" ( possede_cheveux character varying NOT NULL, "Couleur_cheveux" character varying, CONSTRAINT "Table1_pkey" PRIMARY KEY (possede_cheveux), CONSTRAINT "Table1_Couleur_cheveux_fkey" FOREIGN KEY ("Couleur_cheveux") REFERENCES test."Choix_Couleur" ("Couleur") MATCH SIMPLE ON UPDATE CASCADE ON DELETE CASCADE, CONSTRAINT "Table1_possede_cheveux_fkey" FOREIGN KEY (possede_cheveux) REFERENCES test."Choix_Possede" ("Choix") MATCH SIMPLE ON UPDATE CASCADE ON DELETE CASCADE ) WITH ( OIDS=FALSE ); ALTER TABLE test."Table1" OWNER TO postgres; -- Index: test.fki_ -- DROP INDEX test.fki_; CREATE INDEX fki_ ON test."Table1" USING btree ("Couleur_cheveux");
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 -- Table: test."Choix_Couleur" -- DROP TABLE test."Choix_Couleur"; CREATE TABLE test."Choix_Couleur" ( "Couleur" character varying NOT NULL, CONSTRAINT "Choix_Couleur_pkey" PRIMARY KEY ("Couleur") ) WITH ( OIDS=FALSE ); ALTER TABLE test."Choix_Couleur" OWNER TO postgres;
La question devient donc:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 -- Table: test."Choix_Possede" -- DROP TABLE test."Choix_Possede"; CREATE TABLE test."Choix_Possede" ( "Choix" character varying NOT NULL, CONSTRAINT "Choix_Possede_pkey" PRIMARY KEY ("Choix") ) WITH ( OIDS=FALSE ); ALTER TABLE test."Choix_Possede" OWNER TO postgres;
Peut-on, lorsqu'on ajoute des données à la Table 1, avoir un petit menu déroulant reprenant les valeurs de la table liée par la clé étrangère , et ce pour chaque colonne?
Je vous remercie par avance,
A bientôt,
LeHibou2
Partager