Шаблон дизайна / Архитектура - PullRequest
0 голосов
/ 19 августа 2010

Я пытаюсь создать нечто похожее на систему шаблонов форм на моем веб-сайте.

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

Чисто с точки зрения сервера / персистентности, каков наилучший способ создания такой системы?Нужно ли создавать новую таблицу базы данных для каждого созданного шаблона, а затем вставлять экземпляры формы в виде записей в таблицу?Насколько хорошо эта шкала?

1 Ответ

0 голосов
/ 19 августа 2010

Эта тема очень широкая.Что касается масштабируемости, то Wufoo (и другие сайты для создания форм) в настоящее время работают.Итак, краткий ответ: это уже делается, поэтому масштабируемость не должна быть проблемой.Однако случайная генерация нескольких таблиц очень быстро выйдет из-под контроля.

Если вы не находитесь в точке, где у вас возникла эта проблема, я сначала собрал бы систему с одиночными таблицами и UUID для первичных ключей.,Это делает их подвижными позже.Затем, если размеры таблиц становятся проблемой, вы можете разделить таблицы так, как считаете нужным.Например, у вас могут быть все обычные, фамилия которых начинается с A в таблице a_forms.

Что касается структуры таблиц, вы должны построить их как ONE-TO-MANY.Одна форма может иметь много элементов.Все элементы могут быть предварительно определены (т. Е. Текст, текстовая область, переключатель, флажок, кнопка отправки и т. Д.). Когда кто-либо создает форму, вы можете serialize() элементы формы и сохранить их в таблице.Когда необходимо отобразить форму, вы unserialize() анализируете элементы и создаете форму.

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