|
Программирование >> Хронологические базы данных
ставления (в том числе ТНЕ псевдопеременная). Поддерживаются явные преобразования типов, однако не поддерживается неявное приведение типов. Для скалярных типов можно дополнительно определить любое количество операторов, при этом для каждого типа обязательно должен быть определен оператор равенства (с требуемой семантикой). Перейдем теперь к отношениям. Здесь следует различать значения отношений и переменные отношений. Отношение состоит из двух частей - заголовка и тела. Заголовок - это набор атрибутов, а тело - это набор кортежей, соответствующий заголовку. Количество атрибутов называется степенью, а количество кортежей- кардинальностью отношения. Каждое отношение принадлежит типу отношений, а именно - типу RELATION{H}, где Н - соответствующий заголовок. Отношение можно представить себе как таблицу, столбцы которой являются атрибутами, а строки- кортежами, но это только приблизительное представление. Отношения обладают четырьмя очень важными свойствами. В них нет одинаковых кортежей Кортежи не упорядочены сверху вниз Атрибуты не упорядочены слева направо Каждый кортеж содержит ровно одно значение для каждого атрибута (т.е. отношения нормализованы или, что то же самое, заданы в первой нормальной форме) Как говорилось в главе 3, заголовок отношения иногда называют предикатом, а кортежи- истинными утверждениями, полученными из предиката в результате подстановки значений параметров (или местодержателей) предиката. Допушение замкнутости мира гласит, что если заведомо корректный кортеж (т.е. удовлетворяющий заголовку отношения) не содержится в теле отношения, то можно предположить, что соответствующее ему утверждение ложно. Поскольку природа значений, которые относятся к некоторому типу, может быть произвольной, допускаются отношения с атрибутами, принимаюшими в качестве значений отношения (что в действительности, как будет видно из глав 6 и 11, очень удобно). Существуют две разновидности переменных-отношений - базовые отношения и представления. Мы научились определять базовые отношения на языке Tutorial D, который используется в этой книге для иллюстрации излагаемого материала. Замечание. Возможно, вы заметили, что, рассмотрев определяемые пользователем операторы для скалярных типов, мы обошли вниманием подобные операторы для типов отношений. Поскольку большинство необходимых реляционных операторов, таких как выборка, проекция, объединение и реляционное присвоение, уже встроены в саму модель, другие определенные пользователем операторы фактически не нужны. Более того, эти встроенные операторы являются общи.ми и, следовательно, применимы к отношениям всех типов. Тем не менее ничто не запрещает вам дополнить набор встроенных операторов собственными операторами. И наконец, мы вкратце рассмотрели, как в языке SQL определяются домены и базовые таблицы. В частности, следует отметить следующее. Домены языка SQL не являются типами. Таблицы языка SQL (базовые или другие) не являются отношениями, поскольку в них допускается повтор строк и их столбцы всегда упорядочены слева направо. В действительности в них даже может быть два или более столбцов с одинаковыми именами (это замечание не касается именованных таблиц, каковыми являются базовые таблицы и представления). В качестве примера рассмотрите таблицу, которая будет получена в результате выполнения следующего SQL-запроса. SELECT * FROM S, Р ; Упражнения 5.1. Пусть каталог имеет структуру, которая представлена на рис. 3.6 в главе 3 для базы данных отделов и служащих. а) Переименуйте различные компоненты каталога с помощью формальной реляционной терминологии, представленной в этой главе. б) Как должна быть расширена структура каталога с учетом типов (доменов)? в) Напишите запрос к этому расширенному каталогу для поиска всех именованных переменных-отношений, в которых используется атрибут типа EMPt. г) Как будет выглядеть запрос п. в, записанный на языке SQL, но без использования типов данных, которые определены пользователем? 5.2. На каких доменах основаны сами переменные-отношения каталога? 5.3. Для базового отношения PART STRUCTURE (см. рис. 4.6 в главе 4) выполните следующее. а) Используя рассмотренные в этой главе средства языка Tutorial D, определите базовую переменную-отношение, а также соответствующие типы. б) Предположим, что эта базовая переменная-отношение включена в базу данных отделов и служащих из упр. 5.1. Покажите, какие изменения должна внести система в каталог, чтобы отобразить ваш ответ к п. а. в) Используя язык Tutorial D, напишите набор операторов DROP, необходимых для того, чтобы отменить изменения, которые были внесены в каталог в п. б. 5.4. Используя язык Tutorial D, напишите набор необходимых определений для базы данных поставщиков, деталей и проектов, представленной на рис. 4.5. (см. упражнения в главе 4). 5.5. Как отмечалось в разделе 5.2, говорить, что объем некоторой поставки равен, например, 100 деталям, некорректно (объем поставки - это значение типа QTY, а не INTEGER). В этом смысле рис. 4.5, например, несколько неаккуратен, так как, глядя на него, можно предположить, что объемы поставок принадлежат типу INTEGER. Используя ваш ответ к упр. 5.4, покажите, как следует называть различные скалярные значения, представленные на рис. 4.5. 5.6. Используя ответ к упр. 5.4, ответьте, какие из следующих скалярных выражений корректны. Укажите тип результата выполнения каждого корректного выражения. Для остальных выражений напишите корректный вариант выражений, которые будут давать предполагаемый результат. а) J.CITY = Р.CITY б) JNAME II PNAME в) QTY nOO 1 ЯП Чпгти JT Ррпяиипиипя мпдрпи г) QTY + 100 д) STATJS + 5 е) J.CITY < S.CITY ж) COLOR = P.CITY з) J.CITY=P.CITY 11 burg 5.7. Дайте все возможные определения скалярного типа CIRCLE (типа, описывающего произвольные круги на плоскости). Какие операторы выбора и операторы ТНЕ применяются к этому типу? Кроме того, выполните следующее. а) Определите набор операторов чтения для вычисления диаметра, длины окружности и площади заданного круга. б) Определите оператор обновления, удваивающий радиус заданного круга (точнее, модифицирующий заданную переменную CIRCLE так, чтобы ее значение оставалось неизменным, за исключением радиуса, который будет увеличен в два раза). 5.8. Иногда домены или типы рассматриваются как обычные переменные. Например, с расщирением бизнеса для нумерации служащих компании трех цифр может оказаться недостаточно, и поэтому множество всех номеров служащих придется модифицировать. Опищите возможные решения проблемы. 5.9. По определению отношение имеет множество атрибутов и множество кортежей. Пустое множество в математике рассматривается как вполне приемлемое. Обычно для теорем, формул и т.д. желательно, чтобы, если они выполняются для множества из п элементов, они выполнялись и для множества из и = О элементов. Может ли отношение иметь пустое множество кортежей? Может ли оно иметь пустое множество атрибутов? 5.10. Иногда базовые переменные-отношения рассматриваются как обычные файлы, в которых в качестве записей выступают кортежи , а в качестве полей - атрибуты . Обсудите этот тезис. 5.11. Как мы уже видели, операторы определения данных вызывают изменение содержания каталога. Но каталог - это всего лишь набор переменньгк-отношений, как и остапьная часть базы данньгх. Можно ли применять обычные реляционные операторы INSERT, UPDATE и DELETE для соответствующего изменения каталога? Обоснуйте свой ответ. 5.12. Используя язык Tutorial D, напишите набор операторов DROP, необходимый для удаления из базы данных поставщиков, деталей и проектов всей информации, определенной пользователем. Список литературы Большинство перечисленных ниже ссылок касается не только структурного аспекта, но и всех аспектов реляционной модели. 5.1. Codd E.F. А Relational Model of Data for Large Shared Data Banks CACM. - June, 1970.- 13, № 6. (Переиздано: Republished in Milestones of Research. - Selected Papers 1958-1982 CACM. - January, 1983. - 26, № 1. См. также более раннее издание: Derivability, Redundancy, and Consistency of Relations Stored in Large Data Banks IBM Research Report RJ599. - August, 1969. - № 19. Замечание. Это раннее издание является первой публикацией Кодда (Codd) о реляционной модели.)
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |