Надстройка к SQL - хранение объектов в виде специальной структуры

Messorosh

Новичок
Надстройка к SQL - хранение объектов в виде специальной структуры

Есть идея написать модуль (точнее уже начал писать) для сохранения / использования объектов данных, представленных в виде структуры в SQL. Описание структуры чуть ниже. Вот хочу поинтересоваться - такое уже есть / это бред моего больного сознания / это полезная вещь.

Идея в следующем:
Объект представляет из себя набор полей, иерархически расставленных в виде дерева (то есть у поля может быть зависимое поле и т.д.). Каждое поле может иметь сколь угодно много значений. Значения зависимые поля существуют только в привязке к конкретным значениям родительских полей (исключение составляют поля, у которых не может быть значений). Каждое поле может быть наделено любым количеством флагов, представляющих собой пары name: value. Часть этих флагов - системные (то есть обрабатываются непосредственно модулем, например флаг типа или флаг максимального количества значений), остальные - пользовательские (могут использоваться для выборки отпределенных полей или сортировки полей).
Как-то не очень получается объяснить теоретически - возможно на примере будет понятней
Имеем изделие, которое сделано из различных материалов различных цветов, описываем таким объектом:
изделие{
материал
-> цвет
}


Экземпляр будет выглядеть так ("поле" (значение)):
изделие {
"материал" (пластик)
-> "цвет" (синий)
-> "цвет" (зеленый)
-> "цвет" (белый)
"материал" (ткань)
-> "цвет" (бежевый)
-> "цвет" (красный)
}


Без конкретного значения поля "материал" значение соответсвующего поля "цвет" не существует.

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

AmdY

Пью пиво
Команда форума
тоесть это получится поле типа xml, только с возможностью наследования
насколько я знаю, поля xml кое-как, вернее, почти никак, в мускуле уже есть, даже можно выборку по xpath делать, а вот наследование и типизация - это действительно интересно.
 

Messorosh

Новичок
Это не совсем xml. Я бы сказал, что это нечто среднее между xml и многоуровневым массивом.
У xml структура подчиненности полей заранее не определена, то есть фактически каждый документ xml - это отдельный объект (в моей интерпретации) с единственным экземпляром.
То есть структуру объекта можно описать через xml легко, а вот наоборот - нет.
Больше это похоже на многоуровневый массив (если не брать во внимание типизацию). Пример выше в виде массива будет выглядеть так:
экземпляр = array("материал" => array("пластик" => array("цвет" => array(синий, зеленый, белый)), "ткань" => array("цвет" => array(бежевый, красный))))
То есть по уровням вложенности чередуются поля и их значения.
 

whirlwind

TDD infected, paranoid
А можно пример практического использования? Это чисто декоративная функция для CMS-ок или что-то еще?
 

.des.

Поставил пиво кому надо ;-)
Билдер форм для сервера объявлений. Ну и да для CMS :) точнее ObjectMS :)
 
Сверху