Особенности схемы базы данных для веб-приложения создания динамических форм / опроса - PullRequest
2 голосов
/ 08 декабря 2011

Я создаю веб-приложение, которое по существу позволяет «администраторам» создавать формы с любым количеством и комбинацией элементов формы (флажки, поля со списком, текстовые поля, поля даты, радиогруппы и т. Д.). «Пользователи» войдут в это приложение и заполнят формы, которые создают администраторы.

Мы используем MySQL для нашей базы данных. Кто-нибудь реализовал приложение с таким типом функциональности? Мои первые мысли заключаются в том, чтобы сериализовать схему формы с JSON и сохранить ее в виде поля в одной из моих таблиц базы данных, а затем сериализовать представления от разных пользователей, а также сохранить их в таблице mysql. Другая мысль: для этого подойдет база данных без SQL, такая как MongoDB?

1 Ответ

2 голосов
/ 08 декабря 2011

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

Другое решение, которое я видел для реализации этого в базе данных SQL, - это решение, описанное в КакFriendFeed использует MySQL для хранения данных без схемы .

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

...