IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Outils PostgreSQL Discussion :

Créer menu déroulant au sein d'une base


Sujet :

Outils PostgreSQL

  1. #1
    Membre régulier
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 79
    Points
    79
    Par défaut Créer menu déroulant au sein d'une base
    [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:

    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");
    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
    -- 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;
    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_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;
    La question devient donc:
    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

  2. #2
    Membre régulier
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 79
    Points
    79
    Par défaut
    Bon, je me réponds à moi-même.

    Cela est prévu dans les prochaines versions… Wait and see.

    A bientôt

    LeHibou2

  3. #3
    Membre habitué
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2008
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 251
    Points : 192
    Points
    192
    Par défaut
    En ce qui concerne le type ENUM, cela existe dans PostgreSQL depuis la version 8.3 je crois...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TYPE "public"."couleurs_cheveux" AS ENUM
      ( 'Blolnd', 'Roux', 'Brun', 'Noir');
     
    CREATE TABLE "public"."commandes" (
    ...
    "couleur_cheveux" "public"."couleurs_cheveux", 
    ...
     );
    Par contre le menu déroulant cela dépend du programme dans lequel on encode les données.

    Pour ma part j'utilise EMS SQM Manager Lite for PostgreSQL et j'ai en effet un menu déroulant me proposant les choix de l'ENUM.

    Si par contre tu crée une application client ou une applet...tu dois alors lister le ENUM et construire avec cela ton menu déroulant.

    Pour lister l'ENUM :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT enum_range(null::couleurs_cheveux)
    qui dans ce cas te retournera :

    {Blond,Roux,Brun,Noir}

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Créer connexion entre Vb.net et une base Access
    Par fixfix dans le forum Accès aux données
    Réponses: 9
    Dernier message: 05/12/2007, 10h07
  2. Réponses: 24
    Dernier message: 15/02/2007, 23h41
  3. Comment créer un site immobilier dynamique avec une base de données ?
    Par Alain troverti dans le forum Général Conception Web
    Réponses: 14
    Dernier message: 07/07/2006, 21h57
  4. Réponses: 2
    Dernier message: 23/05/2006, 11h28
  5. Script permettant de créer l'ensemble des indexes d'une base
    Par matacars dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 01/07/2005, 16h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo