2010-10-21 17 views
0

J'apprends actuellement codeigniter, php et mySql en même temps que j'essaie de créer un type de site web "checklist", où les visiteurs s'inscrivent, créent un projet et sont invités une liste de questions, où ils doivent entrer certains champsMysql Conception de base de données - checklist/application de quiz

Je suis un peu coincé sur mon mySQL DB-conception ... (complètement coincé en fait)

ce qu'il revient à dire ...

1 projet peut avoir l'un des 3 types. "Type a/b/c"

Tapez un a 20 questions

type b = type A + 15 questions

type c = de type b + 15 questions ...

donc, fondamentalement, je voudrais être en mesure de dire facilement, question A est type A ET/OU type B mais pas C.

Maintenant, je ne sais pas si ce que je fais est correct, mais je fais essentiellement deux tables et ensuite établir une relation entre elles "plusieurs à plusieurs" (je pense?) n: m in mySQL établi

ProjectType 
id 
ProjectTypeName 

Questions 
ID 
Title etc... 

ProjectType_has_Questions 
ProjectType_id 
Questions_id 

en outre, toutes les questions "CAN, ne doit" avoir 3 résultats (faits courants) et 3 (corrections d'amélioration sur les résultats).

Je ne sais pas si cela fait sens pour tout le monde ici, sûr que l'enfer me baffeling: -/

toute pensée? Ps: J'ai essayé de joindre une image mais vu que c'est la première fois que j'utilise le site, cela n'a pas été autorisé.

+0

Est-ce que les questions ont des types ou est-ce seulement des projets qui ont des types? Votre schéma esquissé ne semble avoir que des types de projets. Si les questions n'ont pas de type, qu'entendez-vous par: * La question A est de type A *? –

+0

Certaines choses ne sont pas claires. Les utilisateurs peuvent-ils définir leur propre projet, ou choisissent-ils simplement des réponses à des questions dans quelques types de projets prédéfinis? Qu'est-ce qu'un «fait actuel» et une «amélioration des résultats»? – John

+0

Laissez-moi essayer de clarifier ... J'essaye de créer une liste comparable à http://www.launchlist.com mais alors plus concentrée sur des règles de SEO. Ainsi, un utilisateur peut s'inscrire et se voir offrir une liste qu'il doit remplir. Il y aura trois types de listes, qui doivent être choisies au début du projet. Je pense que la réponse 'flexible' de John @ cashcommons, où je crée une table de liaison est la voie à suivre? Donc je créerais une table où toutes les questions iraient, puis une table où les groupes de questions iraient, et finalement je créerais une table où j'assignerais des groupes à une question. http://alturl.com/ve8y3 - img de mon modèle DB EER. – Jbcarey

Répondre

0

Je vais répondre à ce que je comprends ici. J'ai eu quelques autres questions que j'ai commentées dans votre question. Si vos types de projet vont toujours s'agréger, c'est-à-dire que le type C est toujours un surensemble de type B, qui est toujours un surensemble de type A, alors pour les questions, vous pouvez simplement spécifier le plus gros projet Par exemple, si une question apparaît dans les types A et B, indiquez la question comme type B. Si elle apparaît dans les trois types, indiquez-la comme type C.

Vous vous engagez vous-même quand vous faites cela, cependant. Une façon plus flexible de le faire serait d'avoir une table de liaison qui inclut l'ID de la question et l'ID du type de projet. Chaque question peut avoir une ou plusieurs entrées dans cette table.

Questions connexes