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

1 ... 100 101 102 [ 103 ] 104 105 106 ... 348


OR THE CITY (CITY ) = Stockholm

OR THE CITY (CITY ) = Madrid

OR THE CITY (CITY ) = Amsterdam ;

Очевидным вариантом сокращенной записи этого выражения может быть следующий.

TYPE CITY POSSREP ( CHAR )

CONSTRAINT THE CITY ( CITY ) IN { London , Paris ,

Rome , Athens ,

Oslo , Stockholm ,

Madrid , Amsterdam } ;

б) TYPE St POSSREP ( CHAR ) CONSTRAINT

SUBSTR ( THE St ( St ), 1, 1 ) = S AND CAST AS INTEGER (SUBSTR ( THE S* ( St ), 2 ) > 0 AND CAST AS INTEGER (SUBSTR ( THE St ( St ), 2 ) < 9999 ;

Здесь подразумевается, что в системе существуют операторы выделения подстроки SUBSTR и явного преобразования типов CAST AS INTEGER.

в) CONSTRAINT С IS EMPTY ( Р WHERE WEIGHT > WEIGHT ( 50.0 ) ) ;

г) CONSTRAINT D COUNT ( J ) = COUNT ( J { CITY } ) ;

д) CONSTRAINT E COUNT ( S WHERE CITY = Athens ) < 1 ;

е) CONSTRAINT F

IS EMPTY ( ( EXTEND SPJ ADD 2* AVG ( SPJ, QTY )

AS X ) WHERE QTY > X ) ;

ж) CONSTRAINT G

IS EMPTY ( ( S WHERE STATUS = MIN ( S { STATUS } ) ) JOIN ( S WHERE STATUS = MAX ( S { STATUS } ) ) ) ;

В действительности понятия поставщик с наибольшим статусом и поставщик с наименьшим статусом не очень хорошо определены, поскольку значения статуса не являются уникальными. Заданное требование интерпретируется так, что если Sx и Sy - некоторые поставщики с наибольшим статусом и наименьшим статусом соответственно, то Sx и Sy не должны находиться в одном городе. Также включена проверка того, что наибольший статус и наименьший статус не равны между собой, иначе заданное требование не будет выполняться, в частности оно будет нарушаться, если существует лишь один поставщик.

з) CONSTRAINT Н IS EMPTY ( J { CITY } MINUS S { CITY } ) ;

и) CONSTRAINT I IS EMPTY ( J WHERE NOT ( TUPLE { CITY CITY } IN

( J { J* } JOIN SPJ JOIN S ) { CITY } ) ) ;

к) CONSTRAINT J NOT ( IS EMPTY

( P WHERE COLOR = COLOR ( Red ) ) ) ; Заданное ограничение будет нарушено, если деталей нет совсем. Лучшей формулировкой ограничения могла бы быть такая.

CONSTRAINT J IS EMPTY ( Р ) OR NOT ( IS EMPTY

( P WHERE COLOR = COLOR ( Red ) ) ) ;



л) CONSTRAINT К IF NOT ( IS EMPTY ( S ) )

THEN AVG ( S, STATUS ) > 18 END IF ;

В данном случае проверка существования поставщика необходима, поскольку вычисление функции AVG при отсутствии аргумента могло бы привести к возникновению исключительной ситуации, м) CONSTRAINT L IS EMPTY

( ( S WHERE CITY = London ) { S# } MINUS ( SPJ WHERE P# = Pi ( P2 ) ) { Si } ) ;

h) CONSTRAINT M IS EMPTY ( P ) OR NOT

( IS EMPTY ( P WHERE COLOR = COLOR ( Red ) AND

WEIGHT < WEIGHT ( 50.0 ) ) ) ;

o) CONSTRAINT N

COUNT ( ( ( S WHERE CITY = London ) JOIN SPJ ) { Pi } ) > COUNT ( ( ( S WHERE CITY = Paris ) JOIN SPJ ) { Pi } ) ;

n) CONSTRAINT 0

SUM ( ( ( S WHERE CITY = London ) JOIN SPJ ), QTY ) > SUM ( ( ( S WHERE CITY = Paris ) JOIN SPJ ), QTY ) ;

p) CONSTRAINT P IS EMPTY

( ( SPJ JOIN ( SPJ RENAME QTY AS QTY ) ) WHERE QTY > 0.5 * QTY ) ;

c) CONSTRAINT Q IS EMPTY (

( S JOIN ( S WHERE city = Athens ) ) WHERE city Ф Athens AND CITY Ф London AND city Ф Paris ) AND IS EMPTY ( ( S JOIN ( S where city = London ) ) WHERE CITY Ф London AND CITY Ф Paris ) ;

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

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

8.3.

а) Обращение к оператору выбора значения типа CITY.

б) Обращение к оператору выбора значения типа Si.

в) Операция вставки кортежа (INSERT) в переменную-отношение Р, операция обновления (UPDATE) значения атрибута веса детали WEIGHT.

г) Операция вставки (INSERT) кортежа в переменную-отношение J, операция обновления (UPDATE) значения атрибута CITY - города, в котором выполняется проект.

д) Операция вставки (INSERT) кортежа в переменную-отношение S, операция обновления (UPDATE) значения атрибута города, в котором находится поставщик CITY.



е) Операция вставки (INSERT) или удаления (DELETE) кортежа из переменной-отношения SPJ, операция обновления (UPDATE) значения атрибута размера поставки QTY.

ж) Операция вставки (INSERT) или удаления (DELETE) кортежа из переменной-отношения S, операция обновления (UPDATE) значения атрибута статуса постав-шика STATUS.

з) Операция вставки (INSERT) кортежа в переменную-отношение J, операция удаления (DELETE) кортежа из переменной-отношения S, операция обновления (UPDATE) значения атрибута города, в котором находится поставшик или в котором выполняется проект CITY.

и) Операция вставки (INSERT) кортежа в переменную-отношение J, операция удаления (DELETE) кортежа из переменной-отношения SPJ, операция обновления (UPDATE) значения атрибута номера поставщика или номера проекта.

к) Операция вставки (INSERT) или удаления (DELETE) кортежа из переменной-отношения Р, операция обновления (UPDATE) значения атрибута цвета детали COLOR.

л) Операция вставки (INSERT) или удаления (DELETE) кортежа из переменной-отношения S, операция обновления (UPDATE) значения атрибута статуса поставщика STATUS.

м) Операция вставки (INSERT) кортежа в переменную-отношение S, операция удаления (DELETE) кортежа из переменной-отношения SPJ, операция обновления (UPDATE) значения атрибутов CITY - города, в котором находится поставщик, номера поставщика Si или номера детали Pt.

н) Операция вставки (INSERT) или удаления (DELETE) кортежа из переменной-отношения Р, операция обновления (UPDATE) значения атрибута веса детали WEIGHT.

о) Операция вставки (INSERT) или удаления (DELETE) кортежа из переменной-отношения S или переменной-отношения SPJ, операция обновления (UPDATE) значения атрибута CITY - города, в котором находится поставщик, номера поставщика Si или номера детали Р.

п) Операция вставки (INSERT) или удаления (DELETE) кортежа из переменной-отношения S или переменной-отношения SPJ, операция обновления (UPDATE) значения атрибута CITY - города, в котором находится поставщик, номера поставщика Si, номера детали Р или размера поставки QTY.

р) Операция обновления (UPDATE) значения атрибута размера поставки QTY.

с) Операция обновления (UPDATE) значения атрибута CITY - города, в котором находится поставщик.

8.4. Один тип. Уточнения (5) и (3) лучше рассматривать как ограничения целостности. Как отмечалось в [3.3], первое желательное следствие такого подхода состоит в том, что если переменные X и Y определены, как, скажем, CHAR(5) и CHAR(3) соответственно, то сравнение X и Y допустимо, поскольку в этом случае не нарушается условие, требующее, чтобы участвующие в сравнении операнды были одного и того же типа.



1 ... 100 101 102 [ 103 ] 104 105 106 ... 348

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