Sous énumération

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Sous énumération

par jalol » 21 nov. 2005, 13:18

Salut, merci de ta réponse.

Le souci avec un tel système, c'est que je ne vois pas comment stocker la trace de la sous-origine dans la table clients...
Moi j'avais pensé à faire 2 tables:

Code : Tout sélectionner

TABLE origine ( idOrigine INT NOT NULL AUTO_INCREMENT, nom_origine VARCHAR(50) NULL, PRIMARY KEY(idOrigine) ); TABLE sous_origine ( idSousOrigine INT NOT NULL AUTO_INCREMENT, idOrigine INT NOT NULL, nom_sous_origine VARCHAR(50) NULL, PRIMARY KEY(idSousOrigine, idOrigine) );
Mais le souci c'est que je ne vois pas comment stocker la trace de la sous-origine sans la stocker dans la table clients... Il n'y aurait pas une autre solution?

par Cyrano » 20 nov. 2005, 13:22

L'idée qui me vient alors est un brin plus complexe : il faudrait rajouter plusieurs tables et non juste un champ.
  1. Une table origine avec les champs ori_id, ori_libelle
  2. Une table campages pour les campagnes publicitaires avec cam_id et les champs permettant de répertoirier les infos de chaque campagne
  3. Une table salons avec sal_id et ls champs de date et de description des salons
  4. toute autre table en fonction des champs de la table origine
Ensuite, tu n'aurais qu'à faire une jointure sur les tables clients et origine et en fonction de ce qui ressort de la table origine faire le lien avec la troisième table appropriés. Dans ta table clients, tu rajoutes alors en clé étrangère ori_id qui te permettra de faire ce lien.

L'avantage de ce système au lieu d'un champ enum est que tu ne seras plus limité par le nombre de possibilités et tu pourras même en ajouter sans affecter la structure globale.

par jalol » 20 nov. 2005, 13:05

Voici donc la structure de la table :

Code : Tout sélectionner

TABLE clients ( idClient VARCHAR(255) NOT NULL, civilite CHAR(50) NOT NULL, nom_client CHAR(50) NOT NULL, adresse TEXT NOT NULL, code_postal INT(11) NOT NULL, ville CHAR(100) NOT NULL, TéléphoneDom CHAR(50) NOT NULL, TéléphoneProf CHAR(50) NOT NULL, TéléphonePortable CHAR(50) NOT NULL, etage CHAR(50) NOT NULL, DIGICODE CHAR(50) NOT NULL, PRIMARY KEY(idClient), INDEX clients_identifiant(nom_client, ville) );
L'idée est donc de rajouter un champs Origine en ENUM ('publicite', 'mailing', 'salon', 'perso', 'client') pour ce qui est des grandes catégories d'origine, puis d'insérer une sous-catégorie dans cette enumération pour indiquer par exemple la campagne de pub ou encore le salon où le client a entendu parler de l'entreprise.

Je suppose qu'il faudrait pour cela créer une table annexe, mais j'ai du mal à en appréhender la structure...

par Cyrano » 20 nov. 2005, 12:19

Donne-nous la structure des tables utilisées avec d'une part un exemple de ce qu'on y trouve et d'autre part un exemple de ce que tu veux obtenir, ce sera plus facile pour te guider vers la solution.

Sous énumération

par jalol » 20 nov. 2005, 02:04

Bonjour à tous !

Voilà, j'ai besoin de créer une sous-énumération dans une table...
Je m'explique : Il s'agit de repérer l'origine des clients d'une entreprise. Cette origine sera classée dans plusieurs grandes catégories, lesquelles seront subdivisées dans diverses sous-catégorie. Mon problème est que je ne vois pas comment je peux faire une telle chose.

Quelqu'un aurait une idée?
Merci :)