2014-11-06 4 views
0

Недавно я увидел приложение для веб-сайта, и была интересная форма HTML, которая привлекла мое внимание! в системе менеджера веб-сайтов вы можете определить форму, такую ​​как форма занятости, и вы можете определить, какое поле или поля вам нужно в вашей форме.Генерация динамического поля в базе данных и генерация динамических полей для формы

Например, вы можете получить форму с полями «День рождения», «Имя», «Фамилия» и «Пол», которые являются названиями «День рождения», «Имя» и «Фамилия»: Textbox, а тип «Пол» - Checkbox, поэтому вы можете создать оптимизированную форму, а другую можно создать оптимизированная форма.

После этого любой может заполнить вашу форму на странице клиентов веб-сайта, и вы можете увидеть все заполненные формы на сайте менеджера. поэтому для меня есть большой вопрос, как создается база данных веб-сайта, что она может динамически изменять поля? в первом представлении я думал, что в базе данных есть столбец, который является типом XML, и он может генерировать любую базу форм в XML в одном столбце. но я думаю, что это не очень хорошо, потому что у нас будет обширная база данных по многим подобным данным (XML-текст в основном похож), так есть ли лучший способ сделать это?

примечание: база данных была на sqlserver2012 и я спросил менеджера сайта, который, как ты это сделал, он сказал мне, этот тип конструкции называется «свойство двигателя» для я искал его, но я не нахожу любую полезную информацию! так что ваша идея?

ответ

1

Я не думаю, что вам необходимо XML для реализации такой системы, это вопрос выбора. Это может быть реализовано, например, так:

enter image description here

Это означает: только один шаг вперед в направлении META в вашей модели базы данных.

Но, конечно, вы должны реализовать приложение вокруг такой модели базы данных, которая не проста. Конечно, уже существует множество реализаций этого.


Вы можете также проверить это question - дизайн здесь немного проще, не позволяя повторное использование полей в различных формах - это может быть нормально, и даже лучше, зависит от того, что вы собираетесь реализовать. Таким образом, у вас будет соотношение 1: N между таблицами Form и Field.

enter image description here

Так что ваши поля базы данных будет выглядеть так:

Form 
----- 
    FormID (PK) 
    FormName 
    UserId (FK to users) 
(other fields) 

FormField 
------------- 
    FormFieldId (PK) 
    FormID (FK to form) 
    FieldTypeId (FK to FieldType) 
    FieldName (or Caption ...) 
    (other fields) 

FieldType 
------------- 
    id (PK) 
    name 

FilledForm 
------------------- 
    FilledFormId (PK) 
    +IPAddress, data about who filled the form... 


FilledFormField 
------------------- 
    FilledFormFieldId (PK) 
    FilledFormId (FK) 
    FormFieldId (FK) 
    Value 

Если вам не нужно отслеживать информацию о том, кто заполнил форму, вы можете также удалить FilledForm таблицу из модели.

В таком проекте базы данных не забудьте создать соответствующие первичные ключи и индексы.

+0

Большое спасибо VDohnal, у меня есть некоторые идеи по внедрению этой базы данных, но я ищу новое и лучшее решение, ваш ответ - новое и хорошее решение для меня, но можете ли вы показать мне несколько уроков или рассказать мне некоторые ключевые слова, которые помогут мне найти больше примеров? –

+0

Спасибо за ваш полный, простой и понятный ответ, это так здорово .. –

Смежные вопросы