Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / Л-4(EXPRESS) / Конспект лекций.doc
Скачиваний:
66
Добавлен:
16.05.2015
Размер:
567.3 Кб
Скачать

Слайд 49. Интерфейс между схемами

Пояснения

Как уже говорилось, одним из преимуществ EXPRESSявляется способность задавать большие и сложные информационные модели, сохраняя, тем не менее, возможность их восприятия человеком. Для достижения этогоEXPRESSпозволяет разбивать крупные информационные модели на более мелкие (каждая такая модель выражается отдельной схемой). Целостность большой модели сохраняется, т.к. вEXPRESSсуществует инструмент для задания связей между схемами, с помощью которого можно «соединять» несколько схем в единую информационную модель.

Связь между двумя схемами задается путем спецификации интерфейса между ними. Интерфейс между схемамипредназначен для того, чтобы строительные блоки одной схемы были видимы в другой схеме и могли использоваться для задания ее строительных блоков. Существует возможность задания интерфейса для целой схемы, при которой все строительные блоки одной схемы будут видимы в другой схеме. С другой стороны, можно задать интерфейс для отдельных блоков схемы, в этом случае в другой схеме будут видимы только отдельные блоки схемы. Та схема, чьи строительные блоки заимствуются для данной схемы, обозначается как «чужая схема» по отношению к данной.

Существует два типа интерфейсов между схемами: использование(USE) иссылка(REFERENCE). Пусть существует схема «people» (люди), содержащая сущность «person» (человек), а также два варианта схемы «футбол», содержащих сущность «player» (игрок). В первом варианте (в схеме «football_use») объявлен интерфейс использования схемы «people». Это дает возможность использовать строительные блоки схемы «people» в схеме «football_use» и объявить сущность «player» в качестве потомка сущности «person». Во втором варианте (в схеме «football_ reference») объявлен интерфейс ссылки, представляющий собой ограниченный вариант интерфейса использования. Основная разница между двумя типами интерфейсов состоит в возможности использования сущностей чужой схемы. В случае интерфейса использования сущности чужой схемы являются полноправными членами данной схемы и могут участвовать, например, в отношениях наследования (сущность «person»). В случае интерфейса ссылки сущности чужой схемы могут быть использованы только в качестве представления атрибутов сущностей данной схемы. В данном примере сущность «person» схемы «people» используется в объявлении атрибута «who_is».

Интерфейс между схемами задается с помощью ключевых слов «USE» или «REFERENCE», после которых следует ключевое слово «FROM», а за ним – имя чужой схемы и, если необходимо специфицировать интерфейс не ко всей схеме, а к отдельным ее компонентам, перечень компонентов чужой схемы.

Слайд 50. Пример информационной модели

Пояснения

На слайде представлен пример в виде небольшой информационной модели, задающей предметную область библиотеки. Данная информационная модель состоит из двух схем: «people» (люди) и «library» (библиотека).

В схеме «people» определена единственная сущность «author» (автор), которая используется для построения схемы «library». Сущность «author» имеет три явных атрибута: «first_name» (имя), «middle_name» (отчество) и «last_name» (фамилия); все они представлены строковым типом «STRING», а атрибут «middle_name» объявлен как необязательный (OPTIONAL). На область экземпляров сущности «author» наложено ограничение в виде правила уникальности «ur1», требующего, чтобы комбинации значений обоих атрибутов сущности были уникальными для всех экземпляров сущности.

Схема «library» использует все строительные блоки схемы «people» через конструкцию «USEFROM». В самой схеме «library» задано три сущности: «issue» (издание), «book» (книга) и «journal» (журнал), причем две последние являются потомками первой и наследуют все ее свойства.

Сущность «issue» содержит четыре явных атрибута: «name» (название), «year» (год выпуска), «pages» (количество страниц) и «value» (ценность издания; не путать с ценой). Кроме того, у данной сущности присутствует один вычисляемый атрибут «price» (цена в денежном эквиваленте), значение которого выражено произведением значений атрибутов «pages» и «value». На область экземпляров сущности «issue» наложены два ограничения в виде правил области значений (WHERE-правил). Одно из них – «wr2» – требует, чтобы значение атрибута «pages» было больше нуля для каждого экземпляра сущности. Другое – «wr1» – требует, чтобы атрибут «year» был не меньше минимального значения, выраженного константой «start_year» (начальный год), но и не больше максимального значения, выраженного константой «now» (текущий год). Последнее ограничение означает, что в библиотеке должны быть книги, выпущенные в определенный промежуток времени: в данном случае, не ранее 1950 года, но и не позже 2000 года.

Сущность «book» наследует все атрибуты и ограничения сущности «issue» и дополнительно определяет атрибут «book_authors» (авторы книги), имеющий в качестве своей области значений множество экземпляров сущности «author». Это множество не допускает повторений, содержит по крайней мере один элемент и неограничено сверху.

Сущность «journal» наследует все атрибуты и ограничения сущности «issue» и дополнительно определяет атрибут «journal_issue» (выпуск журнала). Для задания области значений этого атрибута в схеме определены сразу три поименованных типа. Предполагается, что выпуск журнала может обозначаться либо порядковым номером, либо месяцем выпуска. Для представления этих вариантов в схеме объявлены два поименованных типа: соответственно «journal_number» (номер журнала; он объявлен на основе простого типа «INTEGER» с дополнительным требованием неотрицательности значений) и «months» (месяцы; он объявлен на основе составного типа «перечисление» (ENUMERATION), содержащего обозначения всех двенадцати месяцев года). Кроме того, объявлен тип «issue_variants» (варианты обозначения выпуска), который как раз и представляет область значений атрибута «journal_issue» и задан составным типом «выбор» (SELECT) на основе типов «journal_number» и «months».

В информационной модели также присутствуют комментарии: встроенный комментарий находится в схеме «people», а хвостовой комментарий приведен в схеме «library».