Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Ограничения переменной-отношения




Ограничения атрибута

Ограничения типа

Ограничения типа предназначены для того, чтобы указать перечень значений, которые допустимы для переменных данного типа. В этом случае при определении самого типа ему присваивается имя, базовые типы, а также ограничения на значения. К примеру, для типа WEIGHT (вес) может быть выбран в качестве базового типа – тип рациональных чисел, а в качестве ограничения целостности данного типа – ограничение на то, что все значения данного типа должны быть положительными. При создании или изменении некоторого значения, имеющего некоторый тип, должна всегда производиться проверка допустимости это значения для этого типа.

 

Ограничение атрибута по своей сути является простым объявлением о том, что определенный атрибут имеет определенный тип. Вернемся к определению переменной-отношения поставщиков:

VAR S BASE RELATION {

S# S#,

SNAME NAME,

STATUS INTEGER,

CITY CHAR}

Можно отметить, что значения атрибутов S#, SNAME, STATUS и CITY ограничены типами S#, NAME, INTEGER и CHAR соответственно. Другими словами, ограничения атрибутов являются частью определения этих атрибутов и могут быть идентифицированы по соответствующим именам атрибутов. Отсюда следует, что ограничение атрибута может быть устранено только путем удаления самого атрибута.

 

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

Пример 9.1. Смысл следующего ограничения переменной-отношения S (Поставщики) следующий: «Поставщики в Твери должны обладать статусом, равным 20»:

CONSTRAINT SC5

IS_EMPTY (S WHERE CITY = ‘Тверь’ AND STATUS <> 20).

Еще одно ограничение:

CONSTRAINT SCK

COUNT (S) = COUNT (S { S#})

Смысл: «Номера поставщиков должны быть уникальны» или «Ключ {S#} – это потенциальный ключ отношения поставщиков».

CONSTRAINT PC1

IF NOT (IS_EMPTY(P)) THEN

COUNT (P WHERE COLOR = ‘Красный’) > 0

END IF

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

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

 




Поделиться с друзьями:


Дата добавления: 2015-05-09; Просмотров: 660; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.