Введение в системы БД (542480), страница 43
Текст из файла (страница 43)
2. Необязательный параметр определения значения па умолчанию задает значение по умолчанию, которое будет применяться к каждому столбцу, определенному на этом домене и не имеющему собственного явного заданного значения по умолчанию (подробности приводятся в следующем разделе). Значение этого параметра должно иметь вид ОЕРАОЬТ <значенне ло умолчании>, где параметр <значение ло умолчанию>, в свою очередь, может быть литералом, именем встроенного О- адического оператора илн ключевым словом М01 Ь'з. Замечание.
Оператор, который не имеет операндов, называется О-адическим (например, СОЕЕЕМТ ОАТЕ). 3. В необязательном параметре <ограничении> перечисляются все ограничения, применяемые к определяемому домену. Обсуждение ограничений мы откладываем до главы 8. Существующий ЯО1.-домен можно в любое время изменить с помощью оператора АЕТЕЕ ООМА1М. В частности, этот оператор позволяет определить для указанного домена новое значение по умолчанию (заменяя при этом старое значение, если оно было указано) или удалить существующее. Он также позволяет ввести новое ограничение целостности для данного домена или удалить уже существующие ограничения.
Подробное изложение всех этих опций (а они довольно сложны) выходит за рамки данной книги. Интересующийся читатель может обратиться к 14.19). И наконец, существующий домен можно отменить с помощью оператора ОЕСР ООМА1М, имеющего следующий синтаксис. ОЕОР ООМА1М <имя домена> <реким>; Здесь параметр <реким> может принимать значения ЕЕБТК1СТ и САБСАОЕ.
Общая идея состоит в следующем. ° При выборе опции ЕЕЯТЕ1СТ домен не будет уничтожен, если на него имеются какие-либо ссылки. ° При выборе опции САЯСАОЕ операция будет выполнена и "каскадно" продолжена во всех направлениях. Столбцы, которые были ранее определены на основе удаляемого домена, будут рассматриваться как определенные непосредственно на базе типа данных этого домена. Механизм такой операции достаточно сложен, и поэтому подробности опускаются. Дополнительные сведения можно найти в 14.19). ц Подробное обсуждение поддержки в языке 5Ьгь путных значений 1обозначаемых ключевым гз словом УУЩ мы отложим до главы!8.
Однако отдельных упоминаний о пустых значениях в этой главе не избежать. 176 Часть П. Реляционная модель Базовые таблицы Прежде чем обсуждать базовые таблицы, необходимо сделать пару замечаний относительно таблиц языка БОЬ вообще. ° Во-первых, в таблицах языка Я Ь, в отличие от настоящих отношений, допустимы повторяющиеся строки, поэтому им не требуются какие-либо первичные ключи (или, более общо, потенциальные ключи). ° Во-вторых, в таблицах языка ЯОЬ, в отличие от настоящих отношений, столбцы рассматриваются в порядке слева направо. Например в таблице поставщиков Я столбец Я() может быть первым столбцом, столбец ЯйАМŠ— вторым и т.д. Перейдем непосредственно к базовым таблицам. Они определяются с помощью оператора СЕЕАТЕ ТАВЬЕ (обратите внимание, что ключевое слово ТАВЬЕ означает здесь исключительно базовую таблицу; то же самое касается операторов АЬТЕЕ ТАВЬЕ и ВЕОР ТАВЬЕ, которые описываются ниже).
Синтаксис выражения следующий. СЕЕАТЕ ТАВЬЕ <имя базовой табпици> ( <список элементов базовой таблицы> ); Здесь каждый параметр <элемент базовой таблицы> является либо определением столбца, либо определением ограничения базовой таблицы. В последнем случае элемент задает ограничение поддержки целостности данных, которое будет применяться к создаваемой таблице, Подробное обсуждение подобных ограничений мы отложим до главы 8. Каждое определение столбца (по крайней мере одно такое определение обязательно должно присутствовать), в свою очередь, выглядит следующим образом. <имя столбца> <тип япи имя домена> [ <эначение по умолчанию> ) Здесь параметр <имя столбца> указывает название столбца, параметр <тип ипи имя домена> задает используемый тип данных или домен, а необязательный параметр <значение по умолчанию> устанавливает значение по умолчанию для описываемого столбца, которое подавляет значение по умолчанию, указанное на уровне домена (если такое имеется).
Замечание. Параметр <значение по умогчанню> задает значение по умолчанию, которое помещается в соответствующий столбец в том случае, если пользователь не указал конкретное значение для этого столбца в операторе 1ЯЯЕЕТ. Подобный случай проиллюстрирован в разделе 4.6 главы 4, Если для данного столбца собственное значение по умолчанию явно не определено, а также если нет такового значения, наследуемого из домена, то предполагается, что значение по умолчанию — ЯУЬЬ, т.е. ББЬЬ вЂ” это "значение по умолчанию, используемое по умолчанию*'.
Пример использования оператора СЕЕАТЕ ТАВЬЕ показан на рис. 4.1 главы 4. Существующее определение базовой таблицы можно в любое время изменить с помощью оператора АЬТЕВ ТАВЬЕ. Он позволяет выполнить следующие изменения. ° Добавить столбец ° Задать для существующего столбца новое значение по умолчанию (которое заменит прежнее значение, если оно было определено) ° Удалить значение по умолчанию для существующего столбца Глава 5. Домены, отношения и базовые переменные-отношения 177 ° Удалить существующий столбец ° Задать новые ограничения целостности ° Удалить существующие ограничения целостности Приведем пример для первого случая.
йЬТЕК ТКВЬЕ Я й00 СОЬОММ Р1ЯСООМТ 1МТЕОЕК РЕРКОЬТ -1 Этот оператор добавляет в базовую таблицу поставщиков столбец с именем 01ЯСООМТ (имеющий тип 1МТЕОЕК). Начальным значением каждой строки этого столбца во всех случаях будет -1. Наконец, существующую базовую таблицу можно уничтожить с помощью оператора РКОР ТйВЬЕ. РНОР ТКВЬЕ <имя базовой таблицил <режим> ; Здесь (как и в случае оператора РКОР РОМй1М) опция <режим> принимает одно из двух возможных значений — КЕЯТК1СТ или СКЯСйРЕ. При выборе опции КЕЯТН1СТ базовая таблица не будет уничтожена, если на нее имеются ссылки в каком-либо представлении или ограничении целостности.
При выборе опции СКЯСКРЕ операция будет выполнена (будут удалены все строки таблицы, а затем и сама таблица), при этом' также будут удалены все представления и ограничения целостности, ссылающиеся на эту таблицу. 5.б. Резюме В этой главе подробно рассматривалась структурная часть реляционной модели, а именно — домены и отношения. Домен — это, в сущности, тип данных (возможно, определенный в системе (встроенный), но в общем случае определенный пользователем).
Он представляет собой совокупность множества значений (всех возможных значений этого типа), из которого будут получать свои значения различные атрибуты, различных отношений, и набор операторов (операторов чтения и обновления), которые могут использоваться для манипулирования значениями и переменными этого типа. Составляющие тип значения могут быть любого вида — числа, строки, даты, время, аудио- и видеозаписи, карты, геометрические точки и т.д. и т.п.
Типы ограничивают возможность выполнения операций, т.е. в общем случае требуется, чтобы используемые в операции значения принадлежали одному домену (имеет место строгий контроль тинов). Строгий контроль типов полезен тем, что он позволяет выявить многие логические ошибки во время компиляции, а не во время работы. К тому же, как вы узнаете из следующей главы, строгий контроль типов имеет много важных применений при выполнении таких реляционных операций, как соединение, объединение и т.д.
Тип может быть либо скалярным, либо нескалярным. Скалярные типы не содержат видимых пользователю компонентов. Наиболее важными нескалярными типами в реляционной модели являются типы отношений, которые определяются с помощью операции генератора типов НЕЬКТ1ОМ. Следует четко различать типы и их физические представления (тип — это модель, а физическое представление — это ее реализация). Кроме того, каждый тип обязательно должен иметь хотя бы одно декларированное допустимое представление. Автоматически задаются оператор выбора для каждого допустимого представления и операторы ТНŠ— для каждого компонента этого допустимого пред- 178 Часть И. Реляционная модель ставления (в том числе ТНН псевдопереиевиая).
Поддерживаются явные преобразования типов, однако не поддерживается неявное приведение типов. Для скалярных типов можно дополнительно определить любое количество операторов, при этом для каждого типа обязательно должен быть определен оператор равенства (с требуемой семантикой). Перейдем теперь к отношениям. Здесь следует различать значения отношений и переменные отношений.
Отношение состоит из двух частей — заголовка и тела. Заголовок — это набор атрибутов, а тело — это набор кортежей, соответствуюший заголовку. Количество атрибутов называется степенью, а количество кортежей — кардинально- стью отношения. Каждое отношение принадлежит типу отношений, а именно — типу НЕ1)(Т10Н(Н), где Н вЂ” соответствуюший заголовок. Отношение можно представить себе как таблицу, столбцы которой являются атрибутами, а строки — кортежами, но это только приблизительное представление.
Отношения обладают четырьмя очень важными свойствами. ° В них нет одинаковых кортежей ° Кортежи не упорядочены сверху вниз ° Атрибуты не упорядочены слева направо ° Каждый кортеж содержит ровно одно значение для каждого атрибута (т.е, отношения нормализованы или, что то же самое, заданы в первой нормальной форме) Как говорилось в главе 3, заголовок отношения иногда называют предикатом, а кортежи — истинными утверждениями, полученными из предиката в результате подстановки значений параметров (или местодержателей) предиката. Допущение замкнутости мира гласит, что если заведомо корректный кортеж (т.е, удовлетворяющий заголовку отношения) не содержится в теле отношения, то можно предположить, что соответствуюшее ему утверждение ложно.