Программирование >>  Хронологические базы данных 

1 ... 322 323 324 [ 325 ] 326 327 328 ... 348


число игроков в соответствующей команде. Например, в столбец ACTIVITY может быть помещено следующее значение: (Fooball, И). Каждое значение HOBBY в действительности является заданной парой значений, т.е. значением переменной NAME и значением переменной TEAM. (Точнее, это пара значений, которая в данный момент присутствует как кортеж в переменной-отношении ACTIVITY.)

емр#

ENAME

кортеж HOBBY

NAME TEAM

кортеж WORKS FOR

NAME

кортеж LOCATION

1 CITY 1 STATE 1

Puc. 25.1. Атрибуты, содержащие кортежи или указатели на них (это решение не рекомендуется)

Замечание. Обратите внимание, что мы уже нарушили предупреждение из третьего манифеста, что переменная-отношение - это не домен, поскольку домен для атрибута HOBBY определен как переменная-отношение ACTIVITY. Подробнее этот вопрос будет рассмотрен ниже.

Аналогично для атрибута WORKS FOR (место работы) в переменной-отношении ЕМР объявлен тип COMPANY (компания), который, в свою очередь, является переменной-отношением, состоящим из двух атрибутов, причем один из них- атрибут CITYSTATE (город, штат) - также является переменной-отношением из двух атрибутов, и т.д. Иначе говоря, переменные-отношения ACTIVITY, COMPANY и CITYSTATE рассматриваются и как типы (или домены), и как переменные-отношения. То же правило, конечно, верно и для переменной-отношения ЕМР.

Таким образом, первое расширение языка, грубо говоря, аналогично разрешению одним объектам содержать другие объекты, тем самым обеспечивая поддержку концепции иерархии вложения (см. главу 24).

В качестве небольшого отступления отметим, что первое расширение мы характеризовали как атрибуты, содержащие кортежи , поскольку так его характеризуют сами защитники уравнения переменная-отношение = класс (см., например, [24.33]). Но точнее его было бы охарактеризовать как атрибуты, содержащие указатели на кортежи (вопрос, который вскоре будет рассмотрен). Поэтому на рис. 25.1 во всех трех случаях следовало бы заменить термин кортеж термином указатель на кортеж.

Замечания, которые были сделаны в отношении первого расширения, справедливы и для второго расширения. Оно допускает атрибуты со значения.ми, представляющими собой отношения, т.е. значениями могут быть .множества кортежей какой-либо другой переменной-отношения (или, возможно, той же самой). Предположим, например, что сотрудники могут иметь не одно, а произвольное число увлечений (рис. 25.2).



ЕМР ЕМР#

ENAME

отношение HOBBIES

NAME TEAM

кортеж WORKS FOR

NAME

кортеж LOCATION

I CITY I STATE

Puc. 25.2. Атрибуты, содержащие .множества кортежей или указатели на них (это решение не реко.мендуется)

CREATE TABLE ЕМР

( EMPt CHAR(5),

ENAME CHAR(20), SAL NUMERIC,

HOBBIES SET OF ( ACTIVITY ), WORKS FOR COMPANY ) ;

Пояснения. Теперь значением столбца HOBBIES внутри данного кортежа переменной-отношения ЕМР концептуально является множество пар значений (NAME, TEAM), т.е. кортежей переменной-отношения ACTIVITY. Это второе расширение, попросту говоря, аналогично разрешению объектам содержать коллекции объектов, что, по сути, является более сложной версией иерархии вложения.

Замечание. Отметим, между прочим, что в продукте, на котором основывается наш пример, объекты коллекции сами по себе могут быть последовательностями или пакетами, а также множествами.

В качестве третьего расширения выступает разрешение переменным-отношениям иметь связанные с ними методы, как, например, показано ниже.

CREATE TABLE ЕМР

( EMPI CHAR(5),

ENAME CHAR(20),

SAL NUMERIC,

HOBBIES SET OF ( ACTIVITY ),

VJORKS FOR COMPANY ) METHOD RETIREMENT BENEFITS ( ) : NUMERIC ;

Пояснения. В этом примере RETIREMENT BENEFITS является методом, который в качестве аргумента принимает заданный экземпляр кортежа ЕМР и возвращает результат типа NUMERIC.

Наконец, последнее расширение заключается в разрешении определять подюассы (рис. 25.3).

CREATE TABLE PERSON

( SSI CHAR(9),

BIRTHDATE DATE, ADDRESS CHAR(50) ) ;



CREATE TABLE EMP

AS SUBCLASS OF PERSON ( EMPI CHAR(5),

ENAME CHAR(20), SAL NUMERIC,

HOBBIES SET OF ( ACTIVITY ), WORKS FOR COMPANY ) METHOD RETIREMENT BENEFITS ( ) : NUMERIC

PERSON

BIRTH DATE

ADDRESS

является

EMP#

ENAME

отношение HOBBIES

NAME TEAM

кортеж WORKS .FOR

NAME

кортеж LOCATION

CITY STATE 1

Puc. 25.3. Персиенные-отношения в качестве суперклассов и подклассов (это решение не рекомендуется)

Пояснения. Переменная-отношение ЕМР имеет три дополнительных атрибута (SSl, BIRTHDATE, ADDRESS), которые наследуются из переменной-отношения PERSON (поскольку каждый экземпляр класса ЕМР также является ( ISA ) экземпляром класса PERSON). Если переменная-отношение PERSON обладает какими-то методами, эти методы также наследуются.

Замечание. Переменные-отношения PERSON и ЕМР являются примерами так называемых супертаблиц и подтаблиц соответственно. В [13.12], а также в приложении Б эти понятия рассматриваются подробнее.

Наряду с описанными вкратце расширениями, касающимися определения данных, потребуются и расширения, связанные с манипулированием этими данными, как, например, показано ниже.

Выражения пути, например ЕМР.WORKS FOR.LOCATION.STATE. В общем случае такие выражения могут возвращать скаляры, кортежи или отношения. Заметим, что в последних двух случаях компоненты таких кортежей или отношений сами могут быть кортежами или отношениями, например выражение ЕМР.HOBBIES.NAME возвращает отношение. Следует отметить, что выражения пути записываются в порядке снижения иерархии вложения, а выражения пути, которые рассматривались в главе 24, - в порядке возрастания.

Литеральные кортежи и отношения, которые могут быть и вложенными.

( Е001, Smith, $50000,

( ( Fooball, 11 ), ( Baseball, 9 ) ),

( IBM, ( San Jose, CA ) ) ) (Реальный синтаксис может отличаться.)



1 ... 322 323 324 [ 325 ] 326 327 328 ... 348

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика