|
Программирование >> Хронологические базы данных
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 допустимо, поскольку в этом случае не нарушается условие, требующее, чтобы участвующие в сравнении операнды были одного и того же типа.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |