Как оформить эти две таблицы? - PullRequest
0 голосов
/ 12 декабря 2010

Я хочу создать приложение, которое позволяет пользователю создавать свои собственные формы.
Пользователь может вводить данные в свою форму и запрашивать данные тоже.Форма может быть отредактирована после создания и использования (добавление / удаление полей из нее).Форма может иметь небольшое текстовое поле, большое текстовое поле, один список, флажок или раскрывающееся меню.

Я читал и спрашивал, какой подход лучше для создания такого рода баз данных иЯ не получил прямого / хорошего ответа.Я читал, что в такого рода приложениях дизайн на основе столбцов (и представление каждого поля в виде столбца) не является хорошей идеей, поскольку пользователь может добавлять много полей, и это не очень хорошая идея, поскольку должно быть ограничение наколичество столбцов в таблице.Однако я не знаю заранее, сколько полей добавит пользователь.(Я не уверен, что они имеют в виду. Это очень поможет, если вы объясните дальше, приведя пример.)

Я подумал, что хорошей идеей может быть сгруппировать поля в соответствии с их типами.(введите 1: текстовое поле, введите 2: раскрывающийся список, введите 3: один список ... и т. д.).Я хочу спроектировать свои таблицы так, чтобы я мог обновить свое приложение и добавить новый тип в любое время, не меняя свою схему.Поэтому я подумал о том, чтобы иметь 2 таблицы: одну таблицу для хранения метаданных о поле: его тип, имя, позицию в форме, возможно, в форме и другую таблицу для хранения фактического значения поля.Кажется, я не знаю, что именно должно быть в этих таблицах и как их правильно оформить.Ваша помощь высоко ценится.

1 Ответ

0 голосов
/ 13 декабря 2010
**Form**     A Form Template
----
formID (PK)
authorID
Name



**FormField**    =  1 row for each new question on the form
----------   
FormFieldID (PK)
FormID   (FK)
FieldID  (FK)
SortOrder  INT


**FormFieldOptions**     - if the form field is a selectbox this will store the options availble to pick from
---------------
FormFieldID   (fk)
Name
SortOrder  INT


**Field**            -- The will be Text Short, Text Long, Checkbox, Radiobutton, Selectbox etc
------
FieldID   (PK)
Name      
TYPE    

Это для создания форм. Для сохранения ответов пользователей / ответов на бланки я оставлю для читателя упражнения;)

...