Введение в системы БД (542480), страница 44
Текст из файла (страница 44)
Поскольку природа значений, которые относятся к некоторому типу, может быть произвольной, допускаются отношения с атрибутами, принимающими в качестве значений отношения (что в действительности, как будет видно из глав б и 11, очень удобно). Существуют две разновидности переменных-отношений — базовые отношения и представления. Мы научились определять базовые отношения на языке Тп!огйа1 В, который используется в этой книге для иллюстрации излагаемого материала.
Замечание. Возможно, вы заметили, что, рассмотрев определяемые пользователем операторы для скалярных типов, мы обошли вниманием подобные операторы для типов отношений. Поскольку большинство необходимых реляционных операторов, таких как выборка, проекция, объединение и реляционное присвоение, уже встроены в саму модель, другие определенные пользователем операторы фактически не нужны. Более того, эти встроенные операторы являются обигиии и, следовательно, применимы к отношениям всех типов. Тем не менее ничто не запрещает вам дополнить набор встроенных операторов собственными операторами.
И наконец, мы вкратце рассмотрели, как в языке Я)1. определяются "домены'* и базовые таблицы. В частности, следует отметить следующее. ° "Домены" языка БО1. не являются типами. ° Таблицы языка Б()1. (базовые или другие) не являются отношениями, поскольку в них допускается повтор строк и их столбцы всегда упорядочены слева направо. В действительности в них даже может быть два или более столбцов с одинаковыми Глава 5.
Домены, отношения и базовые переменные-отношения 179 ЯЕЬЕСТ * ГЕВМ Я, Р Упражнения 1Яй Чпгть П Ряяяяяаняля марпл 5.1. 5.2. 5.3. 5.4. 5.5. 5.6. именами (это замечание не касается именованных таблиц, каковыми являются ба- зовые таблицы и представления). В качестве примера рассмотрите таблицу, кото- рая будет получена в результате выполнения следующего Я;6:запроса.
Пусть каталог имеет структуру, которая представлена на рис. 3.6 в главе 3 для базы данных отделов и служащих. а) Переименуйте различные компоненты каталога с помощью формальной реляционной терминологии, представленной в этой главе. б) Как должна быть расширена структура каталога с учетом типов (доменов)? в) Напишите запрос к этому расширенному каталогу для поиска всех именованных переменных-отношений, в которых используется атрибут типа ЕМР$.
г) Как будет выглядеть запрос и. в, записанный на языке Я()!., но без использования типов данных, которые определены пользователем? На каких доменах основаны сами переменные-отношения каталога? Для базового отношения РЕЕТ ЯНШСТЕЕЕ (см. рис. 4.6 в главе 4) выполните следующее. а) Используя рассмотренные в этой главе средства языка Тц!оПа! !), определите базовую переменную-отношение, а также соответствующие типы. б) Предположим, что эта базовая переменная-отношение включена в базу данных отделов и служащих из упр. 5.!. Покажите, какие изменения должна внести система в каталог, чтобы отобразить ваш ответ к п.
а. в) Используя язык Тп!ог!а! В, напишите набор операторов 0НОР, необходимых для того, чтобы отменить изменения, которые были внесены в каталог в и. б. Используя язык Тп!ог!а! 11, напишите набор необходимых определений для базы данных поставщиков, деталей н проектов, представленной на рис. 4.5. (см.
упражнения в главе 4). Как отмечалось в разделе 5.2, говорить, что объем некоторой поставки равен, например, 100 деталям, некорректно (объем поставки — это значение типа 0ТТ, а не 1МТЕЯЕЕ). В этом смысле рис. 4.5, например, несколько неаккуратен, так как, глядя на него, можно предположить, что обьемы поставок принадлежат типу 1МТЕОЕЕ. Используя ваш ответ к упр. 5.4, покажите, как следует называть различные скалярные значения, прелставленные на рис. 4.5.
Используя ответ к упр. 5.4, ответьте, какие из следующих скалярных выражений корректны. Укажите тип результата выполнения каждого корректного выражения. Для остальных выражений напишите корректный вариант выражений, которые будут давать предполагаемый результат. а) Л.С1ТТ = Р.С1ТТ б) ЛИМЕ ~! РМЛМЕ в) 0ТТ *100 5.10 5.11 5.12 Список литературы Большинство перечисленных ниже ссылок касается не только структурного аспекта„но и всех аспектов реляционной модели.
5.1. Глава 5. Домены, отношения и базовые переменные-отношения 181 5.7. 5.8. 5,9. г) ()ТХ ь 100 Д) ЯТАТчБ Ь 5 е) Ю.СХТХ < Я.СХТХ ж) СОТОК = Р.СХТХ з) ,1,СХТХ=Р.СХТХ !! 'Ьцгй Дайте все возможные определения скалярного типа С1ЕСЬЕ (типа, описывающего произвольные круги на плоскости). Какие операторы выбора и операторы ТЕЕ применяются к этому типу? Кроме того, выполните следующее. а) Определите набор операторов чтения для вычисления диаметра, длины окружности и плошади заданного круга. б) Определите оператор обновления, удваиваюший ралиус заданного круга (точнее, модифицирующий заданную переменную С1ЕСЕЕ так, чтобы ее значение оставалось неизменным, за исключением радиуса, который будет увеличен в два раза).
Иногда домены или типы рассматриваются как обычные переменные. Например, с расширением бизнеса для нумерации служащих компании трех цифр может оказаться недостаточно, и поэтому "множество всех номеров служащих" придется модифицировать. Опишите возможные решения проблемы. По определению отношение имеет мноэн.ество атрибутов и множество кортежей.
Пустое множество в математике рассматривается как вполне приемлемое. Обычно для теорем, формул и т.д. желательно, чтобы, если они выполняются для множества нз и элементов, они выполнялись и для множества из п = 0 элементов. Может ли отношение иметь пустое множество кортежей? Может ли оно иметь пустое множество атрибутов? Иногда базовые переменные-отношения рассматриваются как обычные файлы, в которых в качестве записей выступают "кортежи", а в качестве полей— "атрибуты". Обсудите этот тезис. Как мы уже видели, операторы определения данных вызывают изменение содержания каталога. Но каталог — это всего лишь набор переменных-отношений, как и остальная часть базы данных.
Можно ли прчменять обычные реляционные операторы 1ЕБЕЕТ, ОР1йТЕ и ОЕ1 ЕТЕ для соответствующего изменения каталога? Обоснуйте свой ответ. Используя язык Тпвог(а! В, напишите набор операторов ОЕОР, необходимый для удаления из базы данных поставщиков, деталей и проектов всей информации, оп- ределенной пользователем. Сог(6 Е.Р. А Ке!агюпа1 Мойе! оХ Вага Хог !.агйе БЬагед Вага Вап!гв // САСМ. — Яцпе, 1970. — 13, № 6. (Переиздано: КерцЬИвйес1 !и Мйевгопев оХ КевеагсЬ. — Бе!ее!ей Рарегв 1958-1982 // САСМ.
— 1апцагу, 1983. — 26, № 1. См. также более раннее издание: ПейчаЬ|Игу, Кедцпг!апсу, ав! Сопв!в!енсу оХ Ке!аг!опв Бгогед !и 1.агйе !)ага Вап!св //1ВМ КевеагсЬ Кероп 83599. — Ацйцвй 1969. — № 19. Замечание. Это раннее издание является первой публикацией Кодда (СогЫ) о реляционной модели.) А В С 13 Е Р 1 Ь Права доступа Основные операторы Каталог Принципы разработки СУБД Команды администратора базы данных Функции Поддержка целостности данных Индикаторы Принципы разработки языка М Обработка )ч! Наименование Р Защита Я Классификаторы 8 Структуры Т Типы данных Ч Представления Х Распределенные базы данных с Дополнительные операторы Тем не менее идеи, опубликованные в этой книге, отнюдь не имели широкого распространения.
(См., в частности, статьи (5.7], [5.8] автора этой книги.) Приведем небольшой комментарий к этой статье. Как уже говорилось в настоящей главе, до- 182 Часть П. Реляционная модель С этой статьи все и началось. И хотя прошло более 30 лет, она остается актуальной и стоит того, чтобы ее перечитывали. Конечно, многие идеи со времени ее публикации были в определенной степени улучшены, но по своей природе это были эволюционные, а не революционные изменения. Кроме того, в статье есть идеи, следствия которых до сих пор полностью не исследованы.
Необходимо сделать несколько замечаний относительно терминологии. В своей статье вместо термина "переменная-отношение*' Кодд использует термин "отношение, изменяющееся во времени". Однако этот термин не очень удачен. Вопервых, отношения как таковые являются эначенилчи и не изменяются во времени (математике неизвестны отношения, принимающие разные значения в разное время). Во-вторых, если на каком-либо языке программирования мы пишем 0ЕСЫНЕ Е 1ЕЕЕЕЕЕ ;, то мы не называем Е целым числом, изменяющимся во времени; мы называем ее переменной целого типа. В этой книге используется собственный термин "переменная-отношение" и не используется термин "изменяющееся во времени", однако необходимо просто помнить о существовании этого устаревшего термина, 5.2.