2010-10-03 5 views
1

J'ai un projet qui nécessite une interface graphique Excel (demande du client) avec un backend mysql db/table nécessitant presque 90 champs. (près de 60 champs sont duplications de 6 champs.)mysql: utiliser un champ pour contenir de nombreux "champs" à enregistrer sur les champs

Après avoir réfléchi, je fini par créer une table avec 11 champs: 10 champs interrogeable, et un grand champ qui peut contenir jusqu'à 60 champs " ensemble », séparés par ":"

ainsi, un dossier sur ce grand champ serait ressembler à quelque chose comme ceci:

charge1: 100: 200: 200 :: usd: frais2: 1000: 2000 : 2000 :: usd: charge3: 150: 200: 200: 250: USD, et ainsi de suite

Comme vous pouvez le voir, ce sont des blocs de 6 champs et peuvent être jusqu'à 10 de ces "blocs", mais jamais plus de 255 caractères.

Aucun de ces « champs » doivent être indexés, ni recherché (qui est fait sur les autres 10 champs)

Ce que je fais est la requête « SELECT * » (avec une interface graphique Excel) du 11 champs puis (avec VBA) je sépare ces valeurs en colonnes (cela prend moins de 1 seconde). Avec VBA, j'affiche les données sur certains champs dans le "formulaire" Excel.

Cela fonctionne très bien et je suis très heureux avec les résultats, comme je cherchais une solution légère, simple et super rapide, et il est.

Y at-il une raison technique pour ne pas le faire?

Peut-être que les champs avec trop de caractères peuvent poser des problèmes ????

Je crois savoir qu'il ya beaucoup de façons de gérer cela, mais c'est un petit projet et je suis à la recherche d'une solution simple qui fonctionne, pas un complexe (avec trop de tables et/ou des champs)

Depuis l'interface graphique est une interface Excel, je ne veux pas la rendre trop complexe si ce n'est pas nécessaire.

Merci d'avance pour votre contribution.

Répondre

1

Je pense que vous avez déjà une assez bonne idée des problèmes qui peuvent survenir.

L'indexation ne fonctionne pas vraiment bien sur ces champs, la mise à jour et la lecture de valeurs individuelles nécessitent un travail supplémentaire dans votre application. De plus, vous stockez ce qui ressemble le plus à des chiffres dans une colonne de type chaîne, ce qui signifie un espace de stockage supplémentaire (bien que vous ayez à le comparer à un peu de surcharge pour les colonnes séparées).

Cela pourrait tourner au cauchemar lorsque la structure de ces colonnes changerait.

Tout cela peut être un effort gérable pour vous, mais il est tout à fait possible que le dev après vous détestera. : p

+0

merci pour votre contribution Oui, je suis conscient que ce n'est pas la meilleure solution, mais une table avec près de 100 champs, je ne pense pas que ce soit non plus. Notez qu'il n'y a pas d'indexation nécessaire sur le grand champ. Toutes les valeurs de recherche sont sur les autres champs. – griseldataborda

+0

@griseldataborda: Je ne voulais pas du tout remettre en question votre décision de conception. J'ai essayé de proposer des scénarios auxquels vous n'aviez pas encore pensé, où votre système pouvait poser problème, comme des changements de structure, ou peut-être le besoin soudain de faire des recherches dans ces colonnes. Comme je l'ai dit, il semble que vous ayez pris une décision éclairée en l'état. – Thomas

+0

désolé désolé désolé ... ne voulait pas dire mauvais ou quoi que ce soit. J'apprécie vos commentaires ... J'aimerais juste avoir plus de connaissances pour trouver une autre solution plus appropriée – griseldataborda

Questions connexes