Пояснения

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

 

 

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

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

Схема «library» использует все строительные блоки схемы «people» через конструкцию «USE FROM». В самой схеме «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».