Lier une table "horizontale" et une table "verticale"
Cela fait un bon moment que je recherche cette façon de travailler.
Et elle est mise en oeuvre dans le script Aedituus (! doc vieille mais script actualisé en 07/2009).
En clair : 2 tables
ae_users :
organisation horizontale mais seulement 11 champs =>
id - pseudo - mdp - email.....
ae_user_vars
organisation verticale avec seulement 3 champs : user_id - name - value
exemple 1° enregistrement :
user_id = 1
name = age
value = 18
exemple 2° enregistrement :
user_id = 1
name = sexe
value = f
exemple 3° enregistrement :
user_id = 1
name = pays
value = fr
etc... avec encore une infinité de caractéristiques possibles pour le user_id = 1
ET une infinité de users : user_id = 2 ... user_id = 99999999
Autre info, les champs sont écrits en clair dans un fichiers fields.php
qui contient :
Code:
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
| return array(
array(
'name' => array(
'fr' => 'Age',
'en' => 'Age'
),
'key' => 'age',
'type' => 'text',
'min_size' => 5,
'max_size' => 25,
'validator' => 'int',
'required' => true,
'default' => 18
),
array(
'name' => array(
'fr' => 'Sexe',
'en' => 'Sex'
),
'key' => 'sexe',
'type' => 'text',
'min_size' => 5,
'max_size' => 5,
'validator' => 'int',
'required' => false,
'default' => ''
), |
Le script étant trop structuré pour moi, j'aimerais savoir comment travailler dans cet esprit pour éviter de réaliser des tables démesurément horizontales avec tous les champs en dur.
Idem pour les inserts, updates et selects sur ce genre configuration.