2010-10-21 4 views
0

Я в настоящее время «изучаю» codeigniter, php и mySql сразу, когда я пытаюсь создать «контрольный список» типа сайта, где посетители регистрируются, создают проект и спрашивают список вопросов, где они должны ввести некоторые поляMysql Database design - checklist/quiz application

я немного застрял на моем MYSQL DB-дизайн ... (полностью застрял на самом деле)

что сводится к тому, ...

1 проект может иметь один из 3-х типов. "Тип A/B/C"

Введите 20 вопросов

Тип B = типа а + 15 вопросов

Тип C = типа B + 15 вопросов ...

Поэтому в основном я хотел бы иметь возможность легко сказать, Вопрос а типа а И/ИЛИ Тип B но не C.

Теперь я не знаю, правильно ли я делаю, но я в основном делаю две таблицы, а затем устанавливаю отношения между ними «многие для многих» (я думаю?) n: m in MySQL Workbench

ProjectType 
id 
ProjectTypeName 

Questions 
ID 
Title etc... 

ProjectType_has_Questions 
ProjectType_id 
Questions_id 

Кроме того, каждый вопрос "CAN, не должны" иметь 3 результатов (текущие факты) и 3 корректировки (улучшение по результатам).

Я не знаю, если это делает какой-то смысл для тех, кто здесь, конечно, как ад меня baffeling: -/

какие-нибудь мысли?

ps: Я попытался прикрепить изображение, но, увидев, что это мой первый раз с использованием сайта, это не было разрешено.

+0

У вопросов есть типы или это просто проекты с типами? Кажется, что у вашей эскизной схемы есть типы проектов. Если у вопросов нет типов, что вы подразумеваете под * Вопросом А является тип A *? –

+0

Несколько вещей неясны. Могут ли пользователи определить свой собственный проект или просто выбрать ответы на вопросы в нескольких предопределенных типах проектов? Что такое «текущий факт» и «улучшение результатов»? – John

+0

Позвольте мне прояснить ... Я пытаюсь создать список, сопоставимый с http://www.launchlist.com, но затем более сосредоточен на правилах SEO. Итак, пользователь должен зарегистрироваться, а затем ему будет предложен список, который он должен заполнить. Будет три типа списков, которые должны быть выбраны в начале проекта. Я думаю, что «гибкий» ответ Джона @ cashcommons, где я создаю связующий стол - это путь? Итак, я бы создал таблицу, где все вопросы идут, а затем таблица, в которой входят группы вопросов, и, наконец, создаю таблицу, в которой я задаю группы вопросу. http://alturl.com/ve8y3 - img моей модели DB EER. – Jbcarey

ответ

0

Я отвечу на то, что я здесь понимаю. Имел несколько других вопросов, которые я прокомментировал в вашем вопросе.

Если ваши типы проектов будут всегда агрегироваться, то есть тип C всегда является надмножеством типа B, который всегда является надмножеством типа A, - тогда для вопросов вы можете просто указать самый большой проект, вопрос будет включен. Скажем, если в типах A и B появится вопрос, тогда задайте вопрос как Тип B. Если он появится во всех трех типах, укажите его как Тип C.

Вы совершаете если вы это сделаете. Более гибким способом сделать это будет наличие таблицы ссылок, которая включает идентификатор вопроса и идентификатор типа проекта. Каждый вопрос может содержать одну или несколько записей в этой таблице.