Фон
Я разрабатываю приложение Rails для записи данных исследований. Большая часть из них может быть концептуализирована как данные "опроса" (или "вопросника").
У нас уже есть несколько баз данных Access и файлов CSV, в которых хранятся эти данные. Существующий дизайн состоит в том, что у каждого опроса есть своя собственная таблица с одним столбцом на вопрос. Многие из этих таблиц имеют столбцы 100 + .
Я только что получил отчет о количестве столбцов для всех опросов. Количество 18 683 . Да, 18 683 столбца - на много больше, чем я ожидал. (Я думаю, что столбцов больше, чем строк, всего. Некоторые таблицы могут быть рудиментарными, но я знаю, что некоторые из них очень важны.)
Чтобы уменьшить сложность проблемы, я подумал, что я бы сделал несколько моделей вроде :
Эта стратегия позволит сократить количество столбцов с тысяч до нескольких. Однако я не уверен, как подойти к нему через Rails, потому что:
- Нам нужно хороших видов (лучше, чем автогенераторные формы) для нескольких опросов.
- Нам нужна проверка (некоторые опросы простые, а другие довольно сложные).
- Нам нужно связать данные с другими записями и сообщить об этом. Мои боссы ожидают, что результаты каждого опроса будут развернуты (например, один столбец на вопрос), чтобы они могли его проанализировать. Есть ли для этого элегантное решение?
- Хранение ответов кажется более сложным, чем с широкими таблицами (если не существует хорошей стратегии для «полиморфного столбца»).
- ... и другие случаи, когда я бы хотел рассматривать каждый опрос как модель ActiveRecord.
Вопрос
Как я могу упростить это чудовище "вопрос1, вопрос2, ..., вопрос143"? Хотя я уверен, что не совсем элегантное решение, какой лучший выбор?
Я бы заинтересовался альтернативными базами данных, если бы они упростили ситуацию. Я не очень знаком с базами данных документов (например, mongodb или couchdb), но, насколько я знаю, они могут быть полезны.