Bonjour,
Je suis en train de faire une étude pour la refonte d'un site de rencontres. La question qui me tracasse un peu c'est la façon de structurer données décrivant les profils des utilisateurs.
Le profil d'un utilisateur est composé d'au moins 70 champs groupés selon des catégories (Look, Habitudes, Sorties ...) avec des champs pouvant avoir (pour certains) 1 valeur ou plus.
Par exemple:
Où est ce que vous préférez sortir:
1. Ciné
2. Restau
3. Théâtre ...
Il y a donc la possibilité de créer une table pour chaque groupe (table_look, table_sorties...) avec les différents champs et avec des double ou triple champs pour ceux qui acceptent les valeurs multiples (sortie1, sortie2, sortie3 ...).
Le site dans sa version actuelle est fait de cette façon, la limite réside dans l'évolutivité du profil. L'ajout d'un champ implique des changements divers.
La deuxième manière de faire que j'ai déjà vu des dév utiliser dans une société dont je ne donnerai pas le nom, est de créer une table pour chaque champ. Leurs BDs gèrent des millions de lignes.
Cela donnerait une BD avec quelques 70 tables comportant 3 colonnes (id, champ, valeur_champ), mais garantit :
1. une certaine facilité pour maintenir les champs
2. un nombre de jointures limité en fonction des champs qu'on a besoin d'extraire
La 3ème façon à laquelle j'ai pensé, c'est de stocker le tout dans une seule table (id, champ, type, valeur) où le type définit la catégorie d'information à lire (Look, Habitudes ...)
L'incinvénient c'est que la table aura un volume énorme pouvant ralentir l'exécution du site.
Voilà, c'est un choix décisif qui doit garantir une rapidité d'exécution avec une base de données assez volumineuse et en même temps, il doit faciliter la maintenance du site.
Est-ce quelqu'un pourrait commenter ces différentes façons de faire et proposer une meilleure structure s'il en existe ?
Partager