скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

скачать рефератыКурсовая работа: Язык описания информационных моделей EXPRESS

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

6.3.4 Паттерн AllClasses–OneTable

Паттерн AllClasses–OneTable предполагает использование единой таблицы Instances для представления дескрипторов объектов всех классов. В столбцах таблицы хранятся идентификатор объекта и его тип. Контекст использования паттерна связан с представлением атрибутов классов в виде самостоятельных таблиц. В этом случае связь между таблицами экземпляров классов и значений их атрибутов осуществляется через внешние ключи записей объектов (см. раздел 6.4.2.2). Предполагается, что значения атрибутов одного и того же типа хранятся в единой таблице независимо от их вхождения в состав того или иного класса. Тем самым достигается существенная для схемо-независимой стратегии инвариантность реляционной схемы по отношению к прикладным моделям. Связь простого объекта с его классом осуществляется через внешний ключ записи в таблице классов Entities (см. раздел 6.5). Для сложных объектов предусмотрен внешний ключ записи в соответствующей таблице сложных классов Complex_Entities.

6.3.5 Паттерн BLOB

Паттерн BLOB также предполагает использование единой таблицы BLOB Instances для представления объектов всех классов. Однако в отличие от паттерна AllClasses–OneTable в данной таблице используется дополнительный столбец для хранения значений атрибутов, упакованных в бинарную или текстовую строку переменной длины. Задача упаковки значений в строку и их распаковки для клиентских приложений ложится непосредственно на промежуточный слой программного обеспечения. Хотя чтение и запись данных объекта осуществляются за одну операцию обращения к таблице, дополнительные расходы приходятся на обработку строк промежуточным слоем. По существу в этом случае BLOB стратегия объединяет в себе паттерны наследования, агрегации и ассоциации.

Возможны разновидности данного паттерна, связанные с различными способами представления строки значений атрибутов как в бинарном формате, так и в одном из текстовых метаформатов. В частности, применительно к метамодели EXPRESS стандарт STEP определяет формат текстового кодирования прикладных данных (ISO-10303-21) и несколько альтернативных способов XML разметки документов (ISO-10303-28), порождаемых соответствующей прикладной моделью данных, специфицируемой на языке EXPRESS.

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

6.4 Отображение атрибутов

Атрибуты классов представляются либо столбцами соответствующих таблиц объектов классов, либо самостоятельными таблицами. Как и в случае паттернов отображения классов, альтернативы представления атрибутов во многом определяются применяемой схемо-зависимой или схемо-независимой стратегией объектно-реляционного отображения. Рассмотрим их, следуя введенной классификации паттернов отображения атрибутов простых, селективных, агрегатных типов и ассоциаций.

6.4.1 Представление простых типов

Соответствие базовых типов языка EXPRESS типам данных в SQL достаточно прозрачно. В таблицу 1 сведены базовые типы EXPRESS и возможные способы их представления в некоторых популярных коммерческих и свободно распространяемых реляционных СУБД.

Таблица 1. Соответствие базовых типов EXPRESS и SQL в реляционных СУБД

ЕXPRESS MySQL PostgreSQL Oracle
INTEGER INTEGER INTEGER INTEGER
REAL

REAL,

DOUBLE PRECISION

FLOAT8,

DOUBLE PRECISION

NUMBER,

DOUBLE PRECISION

REAL(n) FLOAT(n) NUMERIC(n) NUMBER(n)
NUMBER

REAL,

DOUBLE PRECISION

FLOAT8,

DOUBLE PRECISION

NUMBER,

DOUBLE PRECISION

BOOLEAN

CHAR(1),

TINYINT

CHAR(1),

SMALLINT

CHAR(1),

INTEGER

LOGICAL

CHAR(1),

TINYINT

CHAR(1),

SMALLINT

CHAR(1),

INTEGER

ENUMERATION

VARCHAR(128),

INTEGER

VARCHAR(128),

INTEGER

VARCHAR2(128),

INTEGER

STRING

TEXT (up to 64K),

LONGTEXT (up to 4Gb)

TEXT (about 1Gb)

VARCHAR2(4000),

LONG (up to 2Gb)

STRING(n) VARCHAR(n) VARCHAR(n) VARCHAR2(n)
STRING(n) FIXED CHAR(n) CHAR(n) CHAR(n)
BINARY

BLOB (up to 64K),

LONGBLOB (up to 4Gb)

BYTEA LONG RAW (up to 2Gb)
BINARY(n) VARCHAR(n) BINARY VARBIT(n) RAW(n)
BINARY(n) FIXED CHAR(n) BINARY BIT(n) RAW(n)
ENTITY (reference)

VARCHAR(128),

FOREIGN KEY

VARCHAR(128),

FOREIGN KEY

VARCHAR2(128),

FOREIGN KEY

Помимо указанных вариантов представления точности числовых значений и ограничений длины строковых и двоичных переменных, важные отличия затрагивают способы представления атрибутов типа BOOLEAN, LOGICAL и ENUMERATION. С точки зрения семантики языка EXPRESS значения этих типов упорядочены, и для них определены операции сравнения. Поэтому, если предполагается реализация запросов с использованием подобных операций, более предпочтительным выглядит представление переменных этих типов как целых чисел. В этом случае функция интерпретации значений в терминах исходной прикладной модели возлагается на промежуточный программный слой, возможно, с использованием словарей метаданных. Значения, представленные в виде символьных строк, интерпретируются непосредственно клиентскими приложениями. Средствами СУБД может контролироваться также и корректность данных, для чего должны быть наложены соответствующие ограничения на область допустимых значений.

6.4.2 Отображение атрибутов простых типов
6.4.2.1 Паттерн Attribute–Column

Реализация паттерна представления атрибутов простых типов в виде столбцов соответствующих таблиц объектов довольно прозрачна и естественна для применения в рамках схемо-зависимой стратегии. В этом случае каждая таблица объектов классов включает в себя соответствующий столбец для представления значений простого атрибута. Тип столбца определяется возможными вариантами представления базовых типов языка EXPRESS, рассмотренными в предыдущем разделе. В качестве имени столбца могут быть выбраны либо имя атрибута, уникальное в пределах класса, либо конкатенация имен класса и атрибута, уникальная в пределах информационной схемы.

6.4.2.2 Паттерн Attribute–Table

Данный паттерн предполагает использование самостоятельных таблиц для представления простых однотипных атрибутов. Его применение возможно лишь в рамках схемо-независимой и смешанной стратегий с одновременным использованием таблиц метаданных. Привязка значений атрибутов к дескрипторам объектов осуществляется по внешним ключам записей объектов в таблице Instances, представленным в таблицах атрибутов. Для идентификации хранимых величин как значений атрибутов определенных классов в них также хранятся внешние ключи записей метаинформации о соответствующих атрибутах в таблице Attributes в составе системы таблиц метаданных.

Независимо от принадлежности различным классам значения однотипных атрибутов хранятся в одной таблице. Для представления всех атрибутов простых типов, допускаемых метамоделью языка EXPRESS, в общей реляционной схеме достаточно иметь фиксированный набор из шести таблиц: Integer_Attributes, Real_Attributes, Logical_Attributes, String_Attributes, Binary_Attributes и Enum_Attributes. Предполагается, что в схеме хранения данные типа NUMBER всегда представимы типом REAL, а данные типа BOOLEAN — типом LOGICAL.

6.4.3 Отображение ассоциаций

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

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

Рассмотрим задачу отображения множественных ассоциаций вида “один-ко-многим” как наиболее типовой случай, к которому могут быть непосредственно редуцированы ассоциации “один-к-одному и “многие-ко-многим”. Видятся три наиболее содержательных случая представления ассоциаций и соответствующих им паттерна отображения.

6.4.3.1 Паттерн ForeignKeyAssociation

Данный паттерн применим к прямым множественным ассоциациям при условии, что соответствующая обратная ассоциация является простой. Иными словами, с каждым объектом, участвующим в связи, может быть ассоциировано некоторое множество объектов. Однако каждый объект таких множеств может участвовать только в одной обратной ассоциации этой связи. Паттерн реализуется в рамках схемо-зависимой стратегии путем включения в таблицу ассоциированного класса <Associated_Class> (класса, на который содержится ссылка в классе ассоциации) внешнего ключа на таблицу <Associating_Class>. Имя ключа может соответствовать имени связи в соответствующей спецификации <Associating_Class>. В случае упорядоченных множественных ассоциаций (LIST или ARRAY OF ENTITY) может потребоваться дополнительный столбец в таблице <Associated_Class> для хранения индекса ассоциации. Если связь реализуется как элемент вложенной агрегатной конструкции, то в данной таблице предусматривается необходимое число столбцов индексов для каждого из упорядоченных множеств, участвующих в ней. Аналогично, если связь реализуется как элемент селективной конструкции, то в таблицу добавляется соответствующий столбец для представления дискриминатора. Более подробно эти случаи описаны в паттернах отображения селективных и агрегатных конструкций.

Чтение ассоциирующего объекта реализуется посредством одной операции соединения или двух операций запроса к таблицам <Associated_Class> и <Associating_Class>, один из которых является множественным. Запись объекта также сопряжена с множественной операцией модификации внешних ключей в записях ассоциированных объектов. Затраты памяти в реализации паттерна близки к оптимальным, поскольку издержки приходятся лишь на хранение дополнительного внешнего ключа, а иногда и индекса ассоциации в таблице <Associated_Class>, для каждой связи, в которой ассоциируемый класс участвует.

6.4.3.2 Паттерн ClassAssociation

Данный паттерн позволяет непосредственно представить множественные ассоциативные отношения в результате использования отдельной таблицы в рамках схемо-зависимой стратегии. Такая таблица <Class1>_<Class2>_Associations создается для каждой пары классов, участвующих в ассоциативной связи, и содержит пары внешних ключей записей в таблицах классов ассоциируемых и ассоциирующих объектов.

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

6.4.3.3 Паттерн GenericAssociation

Данный паттерн соответствует схемо-независимой стратегии. Он реализует идею унифицированного представления всех видов ассоциаций, участвующих в прикладной модели, одной таблицей Associations. Ассоциативные связи в таблице устанавливаются через ссылки на дескрипторы прикладных объектов в таблице Instances в виде внешних ключей соответствующих записей в ней. Поскольку для реализации схемо-независимой стратегии важна привязка элементов данных к прикладной модели, для каждой ассоциации в таблице Associations хранится также ссылка на метаинформацию о соответствующем атрибуте, представленную в таблице Attributes. Если ассоциация устанавливается как элемент агрегатной или селективной конструкции, то указывается также ссылка на соответствующую запись в таблицах Aggregates или Selections. Таким образом, таблица Associations хранит множество записей обо всех видах ассоциаций прикладных данных, контексте их использования в составе агрегатных или селективных конструкций и их привязке к прикладной информационной модели, представимыми соответствующими таблицами метаданных.

6.4.4 Отображение селективных типов

Поскольку селективные типы данных в языке EXPRESS по существу являются альтернативным представлением других базовых типов, паттерны их отображения тесно связаны с соответствующими паттернами отображения тех базовых типов, на которых они основаны. Важно отметить, что селективные типы могут быть основаны на простых типах данных, ассоциативных типах, агрегатах различного вида и на ранее предопределенных селективных типах иной организации. Дискриминатор установки селективного элемента данных в одно из альтернативных состояний в реляционной схеме представим столбцом в таблице хранения значений атрибутов объектов. Тип столбца дискриминатора соответствует рассмотренным способам отображения данных перечислимого типа ENUMERATION (см. раздел 6.4.1). А способ представления самого состояния элемента определяется одним из паттернов отображения атрибутов базовых типов. Поскольку в качестве базовых могут выступать пользовательские типы данных, эквивалентные с точки зрения способов представления в реляционной схеме, то для исключения избыточности и минимизации затрат памяти целесообразно выделить подмножество неэквивалентных базовых типов и предусмотреть способы их адекватного реляционного представления. При этом дискриминатор селективного элемента позволит однозначно идентифицировать, в каком именно состоянии хранимые данные находятся.

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

Страницы: 1, 2, 3, 4, 5


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

© 2010.