Это звучит как потенциальный кандидат на решение InfoPath.На первый взгляд, он выполнит большинство / все, что вы просите.
В этой статье дается краткий обзор создания формы InfoPath, основанной на источнике данных SQL.
http://office.microsoft.com/en-us/infopath-help/design-a-form-template-based-on-a-microsoft-sql-server-database-HP010086639.aspx
Я создал полностью индивидуальное решение, как вы описываете, и если бы я когда-либо делал это снова, я бы, вероятно, выбрал либо 1) сторонний продукт, либо 2) меньшую функциональность.Вы можете потратить 90% своего времени на работу с 10% набора функций.
РЕДАКТИРОВАТЬ: перечитайте свои вопросы и получите дополнительные отзывы.
1 - Гибкая структура данных: Нужно помнить пару вещей: производительность и возможность писать отчеты по данным.Чем более общая структура данных, тем труднее будет ее достичь (опять же, исходя из опыта).
В некоторой степени противоречащей как производительности, так и готовности отчетов, Microsoft SharePoint максимально использует фрагменты / документы XML в общих таблицах.гибкость.Я не могу поспорить с функциями SharePoint, так что это делает работу и значительно упрощает структуру данных.XML будет работать хорошо, когда все сделано правильно, но большинству людей будет труднее писать запросы к XML.Несмотря на то, что XML является «гражданином первого класса» для SQL Server, он может работать или не работать так же, как оптимизированная структура таблиц.
2 - формы: Я реализовал пользовательские формы с использованиемXML преобразован с помощью XSLT.XML часто является хорошим выбором для хранения структуры форм;XSLT - монстр сам по себе, но он очень мощен.Что бы это ни стоило, InfoPath хранит свою структуру форм в формате XML.
Я также реализовал динамические формы с использованием пользовательских элементов управления в .Net.Это очень объектно-ориентированный подход, но (в зависимости от сложности пользовательского интерфейса) может потребоваться значительное количество кода.
Наконец (снова на примере SharePoint), Microsoft внедрила ужасно сложный список XML /определения форм в SharePoint 2007. Сложность сводит на нет многие преимущества.Другими словами, если вы идете по XML-пути, сделайте ваши структуры чистыми и простыми, или у вас будет кошмар обслуживания в ваших руках.
РЕДАКТИРОВАТЬ # 2: В связи с вопросом Скотта ниже, вот высокий уровеньструктура данных, которая позволит избежать дублирования данных и не полагаться на XML для большинства определений форм.
Предостережение: я просто собрал этот проект в SQL Management Studio ... Я потратил всего 10минут на это;Разработка гибкой системы форм не является тривиальной задачей, так что это упрощение.Он не касается хранения введенных пользователем данных, только определение формы.

Таблицы:
Форма - top-таблица уровней уровня, которая содержит (как вы могли бы догадаться) коллекцию полей, составляющих форму.
Поле - общие поля, которые можно повторно использовать в формах.Например, вам не нужно 50 различных полей «Фамилия» для 50 различных форм.Обратите внимание на столбец «DataTypeId».В этом столбце можно сохранить любой тип данных, например «число», «свободный текст», даже значение, указывающее, что пользователь должен выбрать из списка.
FormField - позволяет форме содержать 0 полей;в его определении. Вы могли бы даже расширить эту таблицу, чтобы указать, что пользователь может ДОБАВИТЬ столько полей, сколько ему нужно.
Ограничение - в основном таблица поиска, которая определяет тип ограничения (возможно, это максимальная длина, максимумвхождения, обязательные и т. д.)
FormFieldConstraint - связывает ограничение с конкретным экземпляром поля формы. Эта таблица объединяет конкретную форму с конкретным полем с определенным ограничением. Обратите внимание на столбец метаданных, это потенциально можетхорошо использовать XML для хранения специфики ограничения.
По сути, я предлагаю построить нормализованную базу данных с несколькими нулевыми значениями или без них и без дублированных данныхСтруктура, как я описал, поможет вам достичь этой цели.