Схема базы данных, которая может поддерживать специальные свойства

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

Решения

Хранилище данных - это реляционная СУБД, и это не обсуждается :-) В частности, это Microsoft SQL Server 2005 .

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

Другая идея состоит в том, чтобы создать таблицу

reading(, extended_properties)

и сделать поле extended_properties своего рода сериализацией расширенных свойств. Я думал либо JSON, либо XML. Скорее всего, я буду использовать ORM-фреймворк, но еще не решил. В любом случае объектное представление специализированной сущности из чтения может предоставить словарь {extended_property_name, value} , содержащий проанализированные пары ключ / значение из extended_properties поле.

Из этого http://msdn.microsoft.com/en-us/library/ms345117 (SQL.90) .aspx Я понял, что поля XML в сочетании со схемами для них дают понятие типизированного XML внутри СУБД. Также, запросы, включающие XML-содержимое в поле extended_properties , также могут учитывать это.

Чего я хочу

Отзыв о моих предложениях по решению, в первую очередь с чтением таблица и сериализация расширенных свойств.

Кроме того, я понимаю, что это одно из ограничений реляционных СУБД по сравнению с хранилищами на основе ключей / значений. Однако, безусловно, должны быть некоторые методы моделирования, чтобы приспособиться к этому.

Любая обратная связь приветствуется!

8
задан Daniel Fischer 9 May 2012 в 14:39
поделиться