Bonjour,
J'ai un sujet un peu délicat et je n'arrive pas à trouver de solution élégante.
J'ai plusieurs utilisateurs qui doivent avoir chacun une table de données, mais chaque table est personnalisée. Paul aura une table à 2 champs : date, note. Pierre aura une table à 3 champs : pays, pib, pnb.
Pour modéliser ça, j'ai deux solutions.
Solution 1 - Valeurs stockées en texte
J'aurai deux tables :
Table "etiquettes" :
Table "valeurs" (tout est stocké en varchar(255))
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 +----+------+-------------+ | id | nom | type | +----+------+-------------+ | 1 | Nom | VARCHAR(50) | | 2 | Note | INT | +----+------+-------------+
Avec un peu de PHP, je n'ai pas de mal à créer une table intermédiaire qui contiendra les données au bon format.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 +----+--------------+--------+------------+ | id | id_etiquette | valeur | date | +----+--------------+--------+------------+ | 1 | 1 | Paul | 2011-04-21 | | 2 | 2 | 12.5 | 2011-04-21 | | 3 | 1 | Pierre | 2011-04-21 | | 4 | 2 | 17 | 2011-04-21 | | 5 | 1 | Paul | 2011-04-22 | | 6 | 2 | 14 | 2011-04-22 | +----+--------------+--------+------------+
Solution 2 : Stockage de la valeur au bon format
J'aurai deux tables.
Table "etiquettes", avec un code pour le type (ex: 1=INT , 2=DATE, ...)
Table "valeurs", avec une colonne par type, seul le type qui va bien est renseigé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 +----+------+------+ | id | nom | type | +----+------+------+ | 1 | Nom | 3 | | 2 | Note | 4 | +----+------+------+
Et ensuite, je m'en sort plus honorablement, en requétant directement les bonnes valeurs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 +----+--------------+---------+------------+------------+ | id | id_etiquette | val_int | val_date | val_double | +----+--------------+---------+------------+------------+ | 0 | 1 | 3 | 0000-00-00 | 0 | | 0 | 2 | 0 | 2011-04-21 | 0 | | 0 | 1 | 3 | NULL | NULL | | 0 | 2 | NULL | 2011-04-22 | NULL | | 1 | 1 | 3 | NULL | NULL | | 2 | 2 | NULL | 2011-04-21 | NULL | +----+--------------+---------+------------+------------+
Qu'en pensez vous ?
Partager