2009-09-07 6 views
0

ok je développe un quiz ... les options de la question ... alors je me demande ce que je peux utiliser pour les options qui peuvent être très longues (par exemple long paragraphe de texte/code) ou très court (par exemple booléen)MySQL Stockage des données "génériques" (peut être très long ou très court)

si j'utilise si j'utilise VARCHAR (65535) ou TEXT je n'utilise que l'espace dont j'ai besoin, L caractères + 1 ou 2 octets vs L caractères + 2 octets? des différences de vitesse? ou d'autres préoccupations?

ce que d'autres moyens que je pourrais contourner ce - options qui peut être très long ou très court que peut-être censé utiliser idéalement différents types de données

+0

jeter un oeil à cette question: http://stackoverflow.com/questions/200394/one-table-or-many – nickf

Répondre

2

Je pense que vous devriez avoir plusieurs tables, une pour chaque type de réponse. Ajout d'une table parent vous donnera des champs communs:

CREATE TABLE answer (
    id INT PRIMARY KEY, 
    question_id INT 
    type ENUM('bool', 'string'), 
    FOREIGN KEY question_ref (question_id) REFERENCES question(id) 
) Engine=innodb; 

CREATE TABLE answer_bool (
    id INT, 
    value TINYINT NOT NULL, 
    FOREIGN KEY parent_key (id) REFERENCES answer(id); 
) Engine=innodb; 

CREATE TABLE answer_string (
    id INT, 
    value TEXT NOT NULL, 
    FOREIGN KEY parent_key (id) REFERENCES answer(id); 
) Engine=innodb; 
0

Je suis d'accord avec la réponse de soulmerge, bien que les problèmes inhérents évidents dans c'est d'avoir additonal rejoint pour tous les types de données individuelles à chaque fois que vous voulez chercher un résultat pour une question de base.

Cela rend la recherche des données plus compliquée, mais au moins vous empêchez l'enregistrement de données incorrectes.

Dans un message similaire, un répondeur recommande une approche complètement différente, ayant une colonne particulière comme varchar et stocker tous les résultats.

https://softwareengineering.stackexchange.com/questions/168578/having-a-generic-data-type-for-a-database-table-column-is-it-good-practice

Je déteste ne pas conserver les données connexes dans le même dossier, mais au même point, qui précède la puissance des structures de données semble absolument inutile.

+1 pour stocker des données dans des tables pour des types de données spécifiques. Au moins ici, les données doivent être conformes aux règles de stockage.

Questions connexes