Теория расширенных (постреляционных)
баз данных.
1.Модели данных
Существует целый класс бизнес задач (так называемые учетно-аналитические
задачи) в которых обращение к данным удобно вести по так называемым
"бизнес-объектам" - аналогам реальных документов. В
Финансовой сфере примерами бизнес объектов могут служить счета-фактуры,
мемориальные ордера, накладные. С информационной точки зрения
бизнес объекты представляют собой наборы информации, зачастую
довольно сложные, содержащие повторяющиеся элементы, но связанные
в единое целое. Существует два подхода при проектировании информационной
системы из таких бизнес объектов.
При первом подходе проектировщику необходимо осуществить нормализацию
информации, то есть разложить данные содержащиеся в бизнес объектах
на множество таблиц содержащих неделимые "атомарные"
элементы информации. При этом проектировщику необходимо решить
ряд проблем: установить связи между этими таблицами, при определении
отношений "множество ко множеству" создать промежуточные
таблицы перекрестных ссылок, установить ограничения целостности
и так далее.
При проектировании системы содержащей несколько бизнес объектов
проектировщик получает набор одноранговых таблиц со множеством
связей которые можно легко представить в виде ER-диаграммы. Бизнес
объекты как бы "размываются" на фоне таблиц поскольку
таблицы не имеют иерархии. Ведь бизнес объекты иерархичны по своей
сути. Например, строки товаров в счете-фактуре не могут существовать
и не имеют смысла без самого счета. При обращении к бизнес объекту
проектировщик определяет в операторах SQL операции "JOIN"
для выборки информации из нескольких таблиц.
При втором подходе проектировщик осуществляет операции выборки/доступа
к данным оперируя непосредственно над бизнес объектами. Нормализация
данных производится динамически, в оперативной памяти, тогда,
когда это действительно необходимо: например, когда производится
группировка счетов-фактур по типу товара.
Этот подход обеспечивает максимальную эффективность при работе
с бизнес объектами, но требует от СУБД поддержки сложных структур
- таких как вложенные таблицы или массивы, а также возможности
динамической нормализации этих структур. Таблицы в такой системе
приобретают некоторую иерархию: выделяются "главные"
и "вспомогательные" таблицы.