В.С. Рублёв, А. Ш. Кайбышев
1.Постановка задачи
Развитие вычислительной техники в плане роста быстродействия и памяти сделало возможным совершенствование технологий проектирования и использования баз данных. С этой целью были поставлены задачи определения моделей данных для новых типов, интегрирования их с традиционными технологиями, управления потоками данных, автоматизации проектирования и администрирования баз данных [8]-[11]. Новые достижения в научных исследованиях (например, в астрофизике) требуют хранения и обработки колоссальных объемов информации, которые подошли уже к пентабайтам [9]. Потребность в постоянных изменениях не только данных, но и алгоритмов является «неизменной характеристикой современного мира» [7]-[12].
В течение ряда лет мы разрабатываем новый объектный подход к созданию СУБД, который предполагает не только изменение данных объектов, но и возможность изменения типов объектов, то есть схемы базы данных. В этом подходе мы выделили 6 базовых отношений объектов: наследования, включения, внутреннего наследования, внутреннего включения, истории и взаимодействия - и 2 дополнительных отношения, и назвали эту СУБД динамической информационной моделью (в алгебре система объектов с введенными отношениями называется моделью (DIM)), а также разработали объектный язык запросов ODQL. Отметим, что новыми по сравнению с традиционными технологиями являются следующие отношения объектов: внутреннего наследования, внутреннего включения, взаимодействия, а также отношение включения через объект связи.
Описанный в [6] язык объектно-динамических запросов ODQL для динамической информационной модели DIM, концепции которой приведены в [2], обладает полнотой - любая группа объектов DIM (вместе с любыми их свойствами) может быть выделена ODQL-запросом [4]. Вместе с тем, язык запросов в своем варианте SODQL [4] позволяет особенно просто конструировать запросы за счет достаточности указания лишь списка требуемых свойств объектов. В [5] описана организация выполнения запросов, при которой трудоемкость оптимальна и не уступает традиционным технологиям. Но время выполнения запросов [10] зависит от организации хранения данных и манипулирования ими, а также от выбора платформы реализации. При этом должны быть учтены вопросы динамического изменения данных. Рассмотрим общие вопросы такой организации, не зависящие от выбора платформы для реализации.
При этом, учитывая, что полнота описания любой дискретной детерминированной модели (см. в [2]) может быть достигнута даже при использовании только базовых отношений, мы в данной работе не будем рассматривать пока отношения идентификации и выбора. Сначала рассмотрим базовые отношения, иллюстрируя их основным примером, который будет использован в дальнейшем.
2.Основной пример и базовые отношения классов и объектов
Для иллюстрации выбран пример, отражающий данные производства шин. На рис.1 приведена схема базы данных. Класс Шина описывает объекты, являющиеся образцами продукции. Каждый объект-шина этого класса определяется двумя идентификационными параметрами: Модель и Обозначение. Класс Шина связан отношениями включения с классами Протектор, Боковина, Ободная лента, Брекер, объекты которых описывают структуру того или иного объекта класса Шина. Каждый объект-шина, как правило, включает объект-протектор, а также некоторые из объектов других трех классов (но не все). Так как каждый объект-шина может содержать не более одного объекта из этих включенных классов, то класс связи для описания данного включения не требуется. Связь включения на схеме определяется пунктирной стрелкой, идущей от включенных классов Протектор, Боковина, Ободная лента, Брекер к включающему Шина.
Требования к продукции описываются классом Стандарт, который является родительским классом для классов Шина, Протектор, Боковина, Ободная лента, Брекер, поскольку каждый объект этих классов наследует свойства родительского объекта-стандарта такие, как Наименование стандарта и все связи включения других классов в класс Стандарт. В данном случае класс Показатели, включенный в класс Стандарт, определяет для каждого объекта-стандарта те объекты-показатели, значения которых могут быть критичными для соответствия продукции стандарту. Поэтому включение класса Показатели в класс Стандарт идет через класс связи Нормы показателя (на схеме класс связи изображается прямоугольником со скругленными углами, который находится в разрыве пунктирной стрелки связи), объект которой для каждой пары объектов стандарт и показатель, определяемой отношением включения, может задавать диапазон ограничений значения показателя через Нижнюю норму и Верхнюю норму. Таким образом, каждый объект классов Шина, Протектор, Боковина, Ободная лента, Брекер наследует через свой объект-родитель в классе Стандарт, не только наименование этого стандарта, но также и показатели вместе с ограничениями на их значения, которым должна удовлетворять соответствующая продукция.
Рис. 1. Основной пример
Ситуация осложняется тем, что для некоторой продукции определяется не один, а несколько стандартов, например, ГОСТ (государственный стандарт), ОСТ (отраслевой стандарт), ТУ (технические условия), Регламент. Поэтому продукция должна удовлетворять сразу нескольким стандартам. Если для нее определяется старший стандарт ГОСТ и более низкий отраслевой ОСТ, то диапазон ограничений на значения показателя для ОСТ не может быть шире, чем для ГОСТ. То есть стандарты находятся в иерархии от старшего ГОСТ до самого младшего Регламент, но при этом не все они могут быть определены. Каждый объект-стандарт может иметь своего родителя в этом же классе Стандарт. Такое отношение объектов этого класса называется внутренним наследованием. Оно отмечается стрелкой наследования, идущей из этого класса в него же. При этом правила наследования таковы:
Каждый дочерний объект наследует все свойства его родительского объекта, за исключением тех свойств, которые в нем непосредственно определены. Таким образом, в младшем стандарте могут быть определены некоторые показатели, отсутствующие в старшем стандарте. Но если показатель определен для обоих стандартов, то значение диапазона норм в младшем стандарте не должно быть шире, чем в старшем стандарте.
Заметим, что поскольку мы заинтересованы в возможно меньшем действии при выполнении запросов, то исследование наследования внутреннего включения в данном примере не будет вызывать дополнительных действий, если перенести при внутреннем включении наследуемые свойства включения в младший Стандарт из наследуемого старшего Стандарта.
Классы продукции, описанные выше, задают образцы продукции. А реальная продукция должна проходить регулярно испытания на соответствие стандартам. При этом из партии продукции в определенную для контроля дату производятся замеры значений показателей, перечень которых определен стандартом, и составляется паспорт продукции, в который заносятся эти значения и нормы на них, а также вывод ОТК о годности продукции (соответствии стандарту). Поэтому в схеме указан класс Паспорт продукции со свойствами Номер паспорта, Номер партии, Дата выпуска и связями наследования от класса Шина и включения класса Показатели через класс связи Показатель паспорта со свойством Значение. При этом для каждого объекта-паспорта продукции наследуются показатели через родительские объекты классов Шина, Стандарт, и только для них может быть определен объект-показатель паспорта.
Наконец, класс Технологические группы продукции определяет группирование продукции по разным ее свойствам. Например, такими группами могут быть Диагональные шины, Радиальные шины, Автомобильные шины, Шины для грузовых машин и т. д. Некоторые группы могут пересекаться: например, в группу автомобильных шин могут входить и радиальные, и диагональные шины, а в группу диагональных шин могут входить и автомобильные шины, и шины для грузовых машин. Некоторые группы могут целиком входить в другие: например, группа Радиальные автомобильные шины входит целиком в группы Радиальные шины и Автомобильные шины. Для этого используется отношение внутреннего включения объектов, что указывается пунктирной стрелкой, идущей из этого класса в него же.
Еще 2 базовых отношения - это отношение истории и отношение взаимодействия классов и, соответственно, отношения объектов. Отношение истории определяет динамику классов при изменении параметров классов и их связей с другими классами, а также динамику объектов в тех случаях, когда одни объекты перестают существовать и заменяются другими объектами. Каждый такой класс или объект снабжается двумя параметрами: Дата рождения и Дата смерти. Рис. 2 иллюстрирует такое изменение класса Шина, связанное с введением дополнительного параметра Нить, не обязательного для всех объектов класса. При этом определяются класс-предшественник, для которого задана Дата смерти в момент изменения класса, и класс-последователь, для которого, помимо главных идентификационных параметров (MIPO) Обозначение, Модель, появляется дополнительный параметр (ADO) Нить, не обязательный для объектов этого класса, а Дата рождения измененного класса получает тоже значение, что и Дата смерти для класса-предшественника. Заметим, что в данном случае все объекты класса-предшественника не изменяются и становятся объектами класса- последователя. В общем случае может произойти между несколькими классами перераспределение параметров с добавлением новых или удалением некоторых старых. В подобном случае такое изменение классов влечет за собой изменение всех объектов этих классов.
Рис. 2. История классов