Вы можете представить все пользовательские поля в столбце XML, например,
«Но я не уверен, как это повлияет на производительность, однако, на мой взгляд, это, безусловно, самый красивый способ обработки UDF в базе данных».
<UDF>
<Field Name="ConferenceAddress" DBType="NVarChar" Size="255">Some Address</Field>
<Field Name="ConferenceCity" DBType="NVarChar" Size="255">Some City</Field>
...etc
</UDF>
Тогда я бы добавил триггер к таблице, чтобы при обновлении столбца он заново создавал представление для таблицы, которое извлекает значения xml в виде столбцов в представлении. Блокируйте представление и т. Д. Во время его воссоздания, чтобы предотвратить ошибки доступа приложения.
Затем я бы создал хранимую процедуру для обновления XML, чтобы она работала для любого столбца XML после форматирования XML вашего пользовательского поля, например, Вставка / обновление / удаление / Get
GetUDFFieldValue
AddUDFField
UpdateUDFField
DeleteUDFField
- Общие параметры
TableName
ColumnName
(например, используйте динамический SQL, чтобы получить XML из таблицы X по имени столбца X, чтобы сделать его универсальным / универсальным для всех ваших полей UDF)
Вот статья об оптимизации производительности XML из Sql Server 2005 (в более новых версиях отсутствует аналог):
http://technet.microsoft.com/en-us/library/ms345118(v=sql.90).aspx
И наконец:
Вы уверены, что вам даже нужна СУБД? NoSql Лучше подходит для пользовательских полей, я мог бы даже подумать об использовании как NoSql, так и Sql Server.