Я проектирую следующее приложение:
Система приема на работу, позволяющая студентам подать заявку на работу.
Обычно компании могут создавать пользовательские формы, которые студенты, заинтересованные в работе в своей компании, должны заполнять.
У меня есть следующие таблицы:
// здесь хранится название формы, которую компании хотят заполнить студентами:
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 или более знаков), письма (в качестве ответа на вопрос типа переключателя) или строки текста и т. д.
спасибо!