клиентское приложение mysql система проектирования - PullRequest
0 голосов
/ 29 декабря 2011

Я проектирую следующее приложение: Система приема на работу, позволяющая студентам подать заявку на работу.

Обычно компании могут создавать пользовательские формы, которые студенты, заинтересованные в работе в своей компании, должны заполнять.

У меня есть следующие таблицы:

// здесь хранится название формы, которую компании хотят заполнить студентами:

create table forms (
`id` INT(11),
`company_id` INT(11),
`name` varchar(255),
`date_added` date,
 PRIMARY KEY (`id`));


CREATE TABLE form_options
(
`id` INT(11) auto_increment,
`company_id` INT(11),
`form_id` INT(11),
`question` VARCHAR(255),
`active` int(2),
`position` int(4),
`type`  enum('ESSAY', 'QUESTION', 'YESNO', 'CHECKBOX', 'DROPDOWN', 'RADIO', 'FILE'),
`required` tinyint(1),
`data` text,
`date_added` date,
 PRIMARY KEY (`id`));

form_options хранит каждый вопрос, который компания добавляет к форме (хранится в таблице форм). Итак, допустим, что компания A создает форму A и хочет задать студентам следующий вопрос:

Как бы вы описали себя? Хороший Б. ответственный C. трудолюбивый Д. талантливый

следующая строка добавляется в таблицу форм:

формы:

  • id: 1
  • company_id: 1
  • имя: форма А (название формы)
  • дата_добавлена: 2011-12-28

и следующая строка добавляется в таблицу form_option

  • id: 1
  • company_id: 1
  • form_id: 1
  • вопрос: Как бы вы описали себя?
  • активно: 1 (есть активный вопрос)
  • позиция: 1
  • type: RADIO (Компания хочет, чтобы это был вопрос типа переключателя)
  • обязательно: 1 (ДА, вопрос требуется.)
  • данные: {a: приятно; б: ответственный; с: трудолюбивый; d: talented} (это сериализованный массив, хранящий возможные варианты ответа на вопрос у студента)

Проблема в том, что есть много компаний. Когда студент подает заявку на компанию, он должен заполнить форму для этой компании в дополнение к общей форме (которую заполняют все студенты). Я пытаюсь найти наилучший способ хранения ответов ученика, поскольку каждое поле отличается. Примером того, какой наилучшей структурой таблиц для хранения их ответов на бланки компании будет считаться вопрос, может быть эссе (ТЕКСТ), вопрос типа списка переключателей (значение представляет собой целое число или букву) и т. Д. Это означает, что Ответ ученика на вопрос формы может быть в форме эссе (500 или более знаков), письма (в качестве ответа на вопрос типа переключателя) или строки текста и т. д.

спасибо!

Ответы [ 2 ]

0 голосов
/ 29 декабря 2011

A text тип поля будет хорошо работать для ответа.Вы можете хранить хорошие текстовые ответы в значениях радиостанций, флажков и раскрывающихся списков.

ответы

id (int)
student_id (int)
form_option_id (int)
answer (text)

эссе, вопрос: это не требует пояснений

yesno:это будет радио, которое я предполагаю, поэтому просто сохраните значение параметра радио, которое может быть 'да' и 'нет'

checkbox: сохранить значение флажка

dropdown: storeзначение выпадающего списка

radio: сохранить значение файла radio

: сохранить путь к файлу

0 голосов
/ 29 декабря 2011

Я не знаю php, поэтому не могу дать полный ответ, но исходя из моего опыта в других областях и языках, я бы порекомендовал вместо этого позвонить form_options form_questions.

Тогда имейте form_answers таблица с form_id, question_id и ответом.

Вы также захотите переименовать 'form' в нечто вроде application_form.

Таким образом, вы можетеесть таблицы:

application_form (id,name)
application_question (id,application_form_id)
application_answer (id,application_form_id, application_question_id)

Я бы фактически СУШИЛ это на:

application_form (id,name)  
question (id, application_form_id)  
answer (id, question_id, application_form_id)

Осторожнее с вопросами и ответами.
Как только вы поймете всю необходимую сложность и гибкость, вы сможетелегко получить в итоге Какие таблицы базы данных mysql и отношения могли бы поддержать опрос вопросов и ответов с условными вопросами?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...