С.Д. Кузнецов - Основы баз данных (1121716), страница 50
Текст из файла (страница 50)
Возможно, это станет понятнее после обсуждения в конце курса средств объектно-реляционных расширений языка Я(.)).. Как должно быть ясно из этой лекции, механизм доменов в Яг) играет вспомогательную роль. Это не совсем те (может быть, и совсем не те) домены, поддержка которых предполагается реляционной моделью. Фактически определение домена обеспечивает спецификацию ограничений и значений по умолчанию, выносимых за пределы определения столбца. В комитете по стандартизации Я;1).
обсуждается идея полного отказа от поддержки механизма доменов и замены его на соответствуюшим образом адаптированный механизм индивидуальных типов (см. последнюю лекцию курса). гзз Основы баз данных Курс Лекция 12. Язык баз данных ЗОЬ: средства определения базовых таблиц и ограничений целостности Лекция посвящена средствам языка ВЯЬ, позволяющим определять (создавать) базовые таблицы, изменять определения базовых таблиц и отменять их. Поскольку важнымн составляющими определения базовой таблицы являются определения ограничений на уровнях столбцов и таблицы целиком, мы сочли уместным включить в зту же лекцию материал, посвященный средствам определения ограничений целостности общего вшщ (не привязанных к определениям базовых таблиц), изменения и отмены таких определений.
Ключевые слова: базовая таблица, мультимножество строк, операторы СЕЕАТЕ ТАВВЕ, АЬТЕЕ ТАВВЕ и ВВОР ТАВВЕ, определение столбца, значения столбца по умолчанию, ограничения целостности столбца, ограничение нот нцкк, ограничение первичного ключа, ограничение возможного ключа, определение внешнего ключа на уровне столбца, проверочное ограничение на уровне столбца, определение табличного ограничения, табличное ограничение первичного или возможного ключа, проверочное табличное ограничение, табличное ограничение внешнего ключа„способы сопоставления значений внешнего и возможного ключей, ссылочные действия, добавление, изменение или удаление определения столбца, изменение набора табличных ограничений, общие ограничения целостности, операторы ОВКАТК АЕЕКЕТТОН и ВЕОР АЕВКЕТТОН, немедленная и откладываемая проверка ограничений, оператор ект ООиятеАТнтк, Введение Как мы уже отмечали в лекции! Ь к спецификации языка Я.)Ь можно относиться как к спецификации некоторой модели данных, в определенных аспектах близкой к реляционной модели.
Мы стремимся к тому, чтобы порядок лекций, посвященных языку Я)Ь, способствовал правильному пониманию именно этой модели, а не технических тонкостей языка. Предыдущая лекция посвящалась тому, что (т. е. данные каких типов) может храниться в Я;>Ь-ориентированной базе данных. Теперь следует понять, где хранятся эти данные. Как и в реляционной модели данных, в модели Б(гЬ поддерживается единственная родовая структура данных, называемая в данном случае базовой таблицей. В первом из двух основных разделов лекции обсуждаются средства языка $()Ь, предназначенные для определения, изменения определения и отмены определения базовых таблиц. 234 Лекция 12 Средства определения базовых таблиц и ограничений целостности Понятие базовой таблицы родственно понятию отношения; можно считать, что базовая таблица обладает заголовком*, в котором содержатся различаемые имена столбцов и их типы данных (заголовок базовой таблицы является множеством и представляет собой близкий аналог заголовка отношения), и телом, включающим строки, которые соответствуют заголовку таблицы (казалось бы, здесь мы имеем аналоги тела отношения и кортежей).
Но коренное отличие базовой таблицы от истинного отношения состоит в том, что тело таблицы не обязательно является множеством. Среди строк тела таблицы могут встречаться дубликаты, и в обшем случае тело базовой таблицы ЯЯ(. представляет собой мульгпимножеслгао строк. Забегая вперед (см. следуюшие лекции), следует заметить, что порождаемые таблицы КОЕ, которые формируются при выполнении запросов к Я)Е-ориентированной базе данных, еше более отдаляют Б()т от реляционной модели. В таких таблицах может отсутствовать и правильно сформированный заголовок (могут иметься одноименные столбцы). Почему же, понимая принципиальные отклонения языка Я) $. от реляционной модели данных, мы включили эти две темы в один курс и, более того, иногда неформально называем Я)) языком реляционных бал данных? Тому есть несколько причин.
а Во-первых, используя язык К()т., можно не нарушать предписаний реляционной модели, и тогда к «правильно построенной» Я.)т.-ориентированной базе данных применимы все фундаментальные результаты теории реляционных баз данных, включая принципы проектирования на основе нормализации. ° Во-вторых, полностью отвергая родство языка Я)т с реляционной моделью данных, мы выступали бы против установившихся исторических традиций. Этот язык возник около 30 лет тому назад во время реализации в компании тВМ проекта по созданию экспериментальной СУБД Кузгегп К, основной целью которого являлось обоснование практической реализации реляционного подхода к организации баз данных.
Так что исторически Я) Б базировался на реляционной модели данных (возможно, не совсем верно понятой и/или воплошенной). е Наконец, по нашему мнению, в области информационной технологии любой практически используемый инструмент не может быть полностью свободен от компромиссов.
Идеологически чистые решения возможны только в научно-экспериментальной работе. «Великий и ужасный» язык Б()) — зто порождение ряда компромиссов между теорией, практикой и маркетинговой деятельностью. Этот язык является настолько реляционным, насколько это понадобилось потребителям коммерческих СУБД, прямо или косвенно финансировавшим разработку языка. * В ЗГ.Н. ие используются термины эапц««ск и еелс таблицы.
Здесь мы временно пользземся этой термиислогией пьтькс для целей сопоставления модели Зггь с реляционной моделью данных. 235 Основы баз данных Курс В операторе БО) скейте тлвье специфицируются не только столбцы таблицы, но и ограничения целостности, которым должны удовлетворять данные, хранящиеся в базовой таблице. Эти ограничения являются частным случаем ограничений базы данных целиком, для определения которых, а также изменения и ликвидации определений имеются специальные операторы. Обсуждению этих средств посвящен второй основной раздел этой лекции. Средства определения, изменения и ликвидации базовых таблиц Базовые (реально хранимые в базе данных) таблицы создаются (определяются) с использованием оператора скейте тлвье. Для изменения определения базовой таблицы применяется оператор льтее ттгеье.
Уничтожить хранимую таблицу (отменить ее определение) можно с помощью оператора пеое тлвье. Замечание: хотя внешне операторы скейте тйвье, льтее тлвье и пеое тйвье похожи на соответствующие операторы определения, изменения определения и отмены определения домена, между ними имеется принципиальное различие. Определение домена приводит всего лишь к созданию некоторых новых описателей, входящих в состав метаданных базы данных. Создание базовой таблицы, кроме создания соответствующих описателей, порождает новую область внешней памяти, в которой будут храниться данные, поставляемые пользователями.
Тем самым, базовая таблица БО(.-ориентированной базы данных является прямым аналогом переменной отношения реляционной модели данных. Определение базовой таблицы Оператор создания базовой таблицы ОЕЕЕТЕ ТлвьЕ имеет следующий синтаксис: ьавс:аь'е бзе'(пьсеоп::= ОееАте ттгВье ьазе баые пагте (Ьазе:аЬ е е)еглеггб сопела Ьвт) * Ьаэе саЫе е'екепг::= со цпп ггеЕ(п(стог. Ьане гаЫе сопзега(пь себ(п(Г(оп Здесь Ьазе гаЫе паче задаст имя новой (изначально пустой) базовой таблицы. Каждый элемент определения базовой таблицы является либо определением столбца, либо определением табличного ограничения целоспюсти.
* В круглых скобках указывается список определений элементов базовой таблицы (должно присутствовать определение хотя бы одного столбца), разделенных запятыми. 23Б Лвкция 12 Средства определения базовых таблиц и ог аничений целостности Определение столбца Элемент определения столбца специфицируется на основе следующих синтаксических правил: со1пдю с]е11п1Ь)оп тт= со1пдш паше ( с)ага суре ) т1ошазп паше ( деТап1ь т)е11п1ь1оп ] со1пюп сопвьга)пь т)ет)п1т1оп 11зь В элементе определения столбца сс1ппп патде задает имя определяемого столбца.
Тип столбца специфицируется путем явного указания типа данных (с]ага суре) или путем указания имени ранее определенного домена (т]оюа1п патяе). Значения столбца по умолчанию Необязательный раздел определения значения столбца по умолчанию имеет тот же синтаксис, что и раздел определения значения по умолчанию в операторах определения или изменения определения домена; ттЕГ)тт)ЬТ ( 11сега1 ] пт1аб(с Тппсс(оп ] Ит)ЬЬ ) Действующее значение по умолчанию для данного столбца определяется следующим образом: в если в определении столбца явно присутствует раздел РЕШИЛ,Т, то значением столбца по умолчанию является значение„указанное в этом разделе; ° иначе, если столбец определяется на домене и в определении этого домена явно присутствует раздел ттееттт)ьт, то значением столбца по умолчанию является значение, указанное в этом разделе; ° иначе значением по умолчанию столбца является и)ты,.* Заметим, что если значением по умолчанию неявно объявлено неопределенное значение (ттттьь), но среди ограничений целостности столбца присутствует ограничение ист ттттьь (см.
ниже), то считается, что у столбца вообще отсутствует значение по умолчанию. Это означает, что при любой вставке новой строки в соответствующую базовую таблицу значение данного столбца должно быть задано явно. Ограничения целостности столбца Элемент необязательного списка ограничений целостности столбца определяется следующими синтаксическими правилами: ' Заметим, что хотя столбец может получить значение тдл,ь по умолчанию квк явным, так и неявным образом, зтн два случая не являются зквивалентными. Явное задание нтл,ь в качестве значения по умолчанию запрешаег наследование столбцом значения по умолчанию домена.