Мне нужно сохранить набор объектов, из которых есть несколько специализированных версий. Они имеют некоторые общие свойства, но специализированные содержат свойства, специфичные для этого объекта.
Решение
Хранилище данных является реляционной СУБД, и это не обсуждается:-) В частности, это Microsoft SQL Server 2005.
Я мог бы легко создать таблицу для общих свойств, а затем таблицу для каждой из специализированных версий. Однако, скорее всего, новые объекты должны будут быть добавлены в решение позже, и я не хочу поддерживать как объектную модель, так и схему базы данных.
Еще одна идея заключается в создании таблицы
reading(<common properties>, extended_properties)
и поле extended_properties
является некоторой сериализацией расширенных свойств. Я думал о JSON или XML. Скорее всего, я буду использовать структуру ORM, но я еще не решил. В любом случае объектное представление специализированного объекта из reading
может вывести словарь {extended_property_name, value}
, содержащий пар синтаксического анализа/значения из поля extended_properties
.
Из этого http://msdn.microsoft.com/en-us/library/ms345117(SQL.90).aspx Я понимаю, что поля XML, в сочетании со схемами для них, дают понятие типизированного XML внутри СУБД. Кроме того, запросы, связанные с содержимым XML в поле extended_properties
, также могут учитывать это.
Что я хочу
Обратная связь с моими решениями, в первую очередь с таблицей reading
и сериализацией расширенных свойств.
Кроме того, я понимаю, что это одно из ограничений реляционной СУБД по сравнению с хранилищами, основанными на значении/ценности. Тем не менее, наверняка должны быть некоторые методы моделирования, чтобы удовлетворить это.
Любая обратная связь очень ценится!