КАТЕГОРИИ: Архитектура-(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) |
Range of PD is pasportdata. Range of l is Librarians
RANGE OF L IS Librarians RANGE OF R IS Readers (R.FamilyNamе, R.Name, R.Patronymic, R.ReaderCardNumber | R.ReaderCardNumber >100)
Создайте список всех сотрудников, которые родились после 1960 года.
{L | L(L. PasportCode = PD.Code Ù PD. Birthday > 31.12.1960)}
Атрибут Code в отношении PasportData содержит код паспорта того сотрудника, который родился после 1960 года. Этот запрос можно сформулировать иначе: "Для всех сотрудников, данные о которых нужно привести в списке, в отношении PaspоrtData имеются кортежи, соответствующие этим сотрудникам, причем значение атрибута Birthday в каждом таком кортеже больше 31.12.1960". Обратите внимание, что в такой формулировке запроса нет никакого указания стратегии выполнения запроса — СУБД предоставляется свобода выбора операций для выполнения данного задания, а также порядка выполнения этих операций. Эквивалентная формулировка этого запроса в реляционной алгебре будет выглядеть так: "Выбрать такие кортежи отношения PaspоrtData, в которых значение атрибута Birthday больше 31.12.1960, и выполнить их объединение с отношением Librarians". Как видите, здесь порядок выполнения операций задается неявно, но вполне однозначно.
Необходимо отметить, что выражение реляционного исчисления может генерировать бесконечную последовательность кортежей. Мы избежали возникновения этой проблемы благодаря использованию переменных области определения, которые задаются с помощью оператора RANGE. Некоторые разработчики вместо использования этого оператора предпочитают явно указывать область определения внутри формулы. В таком случае можно задать бесконечное множество кортежей, например, следующим образом:
{R | ~ (R Î Readers)}
Это выражение означает набор кортежей, которые не входят в отношение Readers. Выражения подобного типа называются опасными. Чтобы избежать их возникновения, следует добавить ограничение, требующее, чтобы все результирующие значения входили в область определения формулы. Например, областью определения приведенной выше формулы является множество всех значений, которые представлены в отношении Readers. Более подробную информацию по этому вопросу заинтересованный студент найдет в работе Ульмана (Ullman, 1988).
Дата добавления: 2014-01-07; Просмотров: 198; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |