2009-03-31 7 views
0

L'implémentation utilisée là où je travaille utilise environ 10 colonnes dans la table: CUSTOMFIELD1, CUSTOMFIELD2 etc. Et chaque fois que je le regarde, je pense qu'il doit y avoir un meilleur moyen.Quel est un bon moyen de mettre en œuvre un nombre variable de champs personnalisés dans un CMS?

Tout le monde n'utilisera pas tous les 10, certains utiliseront 0 et donc ces colonnes vides me regardent, priant d'être utilisées.

Donc, s'il y a une meilleure façon ... idéalement, je pense que ce serait permettre:

  1. Plus de 10 champs personnalisés. Théoriquement, infini. Pratiquement, quelque chose de sensé comme 15.
  2. Chaque champ personnalisé peut recevoir un nom , défini par l'utilisateur.
  3. Le type de champs personnalisés a pu être défini. Les types de base aiment: chaîne et nombre.

Jusqu'à présent, je pense avoir une colonne nommée custom_fields, qui permet de stocker un chemin vers un fichier contenant les descriptions des champs personnalisés, noms, types, etc. dans un format comme XML, JSON ou YAML qui Je pourrais me transformer en un objet. Et c'est juste la définition du champ personnalisé, il y a toute la question de la façon dont je sauvegarde le contenu qui utilise ces champs personnalisés ...

Quoi qu'il en soit, là où mes pensées sont maintenant. Des idées? PS --- Je suis d'avis que la personnalisation de l'application en fonction de l'utilisateur serait plus idéale que de glisser des choses dans des champs personnalisés, mais je n'ai pas ce luxe & autres fois définissant 2 champs personnalisés supplémentaires fonctionne juste.

Répondre

1

Créer une table séparée - CustomerFields avec des colonnes:

  • customer_id (int),
  • champ
  • (varchar),
  • valeur (varchar),
  • type de données (varchar)

Maintenant, en recherchant toutes les entrées avec customer_id = 'CustomerID' dans la table CustomerFields, vous pouvez affecter autant de variables que vous le souhaitez. La seule chose est que cette valeur n'est pas vraiment un varchar, mais peut être un entier et devrait être analysée. Mais je pense que ce n'est pas un gros problème compte tenu de la simplicité de ce schéma

+0

Merci! C'est assez simple :) Beaucoup plus simple que ce que je pensais! –

0

Tout le monde n'utilisera pas tous les 10, certains utiliseront 0 et donc ces colonnes vides me regardent, priant d'être utilisées.

Une astuce rapide, ne normalise pas ou dénormaliser les bases de données parce que vous devez faire défiler loin sur le côté et que « l'homme est de grande » Parce que ce point de vue est juste une vue arbitraire de la table de base de données.

+0

:) Merci. C'est exactement ce que je pensais! Je vais essayer de garder cela à l'esprit –

Questions connexes