С.Д. Кузнецов - Основы баз данных (1121716), страница 12
Текст из файла (страница 12)
Чтобы эта формулировка была полностью понятна, мы должны хотя бы кратко обсудить понятие неопределенного значения (нОЩ. Конечно, теоретически любой кортеж, заносимый в сохраняемое отношение, должен содержать все характеристики моделируемой им сущности реального мира, которые мы хотим сохранить в базе данных. Однако на практике не все эти характеристики могут быть известны к тому моменту, когда требуется зафиксировать сущность в базе данных. Простым примером может быть процедура принятия на работу человека, размер заработной платы которого еше не определен.
В этом случае служащий отдела кадров, который заносит в отношение Одуждн(ИК кортеж, описывающий нового служащего, просто не может обеспечить значение атрибута слу злрп (любое значение домена рлзмвры выпллт будет неверно характеризовать зарплату нового служащего). Эдгар Кодд предложил использовать в таких случаях неопределенные значения. Неопределенное значение не принадлежит никакому типу данных и может присутствовать среди значений любого атрибута, определенного на любом типе данных (если это явно не запрещено при определении атрибута).
Если а — это значение некоторого типа данных или НПРР, ор — любая двуместная «арифметическая» операция этого типа данных (например, +), а 1ор — операция сравнения значений этого типа (например, =), то по определению: а ор ЯЛЬ = НРЫ, ЫРРА ор а = НРЫ. а )ор ЬБЬЬ = цпКпоът~ НРРР )ор а = цпКпоип Здесь ипхпонп — это третье значение логического, или булевского, типа, обладающее следующими свойствами: МОт ппКпоип = ппКпоып гтце АМР цпКпоып = цпКпонп Ггце ОК ппКпоип = Ггце 50 Лекция 2 Введение в реляционную модель данных га1ве АНР шпспонп = (а1ве (а1ве ОЛ пп)спонп = пп)споьп (напомним, что операции АМО и Он являются коммутативными)*.
В данной лекции нам достаточно приведенного кратко~о введения в неопределенные значения, но в следующих лекциях мы будем неоднократно возвращаться к этой теме. Так вот, первое из требований — требование целостности сущности — означает, что первичный ключ должен полностью идентифицировать каждую сущность, а поэтому в составе любого значения первичного ключа не допускается наличие неопределенных значений. (В классической реляционной модели это требование распространяется и на возможные ключи; как будет показано в следующих лекциях, в БОБ-ориентированных СУБД такое требование для возможных ключей не поддерживается.) Второе требование, которое называется требованием цедоггдногти ~о ссылкам (ге/елен!(а! тгеяп у/, является более сложным.
Очевидно, что при соблюдении нормализованности отношений сложные сущности реального мира представляются в реляционной БД в виде нескольких кортежей нескольких отношений. Например, представим, что требуется представить в реляционной базе данных сущность ОтДел с атрибутами ОтД номер (номер отдела), Отд РАзм (количество служащих) и Отд слу (множество служащих отдела). Для каждого служащего нужно хранить слУ МОМНР (номер служащего), СЛУ ИМЯ (имя служащего) и СЛУ ЗАРП (заработная плата служащего).
Как мы увидим в лекции 7, при правильном проектировании соответствующей БД в ней появятся два отношения; Отделы (Отд МОМНР, ОТД РАЗМ) (первичный ключ — (ОТД НОМЕР)) и СЛУЖАЩИЕ (СЛУ НОМЕР, СЛУ ИМЯ, СЛУ ЗАЕЛ, СЛУ ОТД НОМ) (ПЕРВИЧНЫЙ КЛЮЧ вЂ” (СЛУ НОМЕР)). Как видно, атрибут СЛУ ОТД НОМ вводится в отношение СЛУЖАЩИЕ не потому, что номер отдела является собственным свойством служащего, а лишь для того, чтобы иметь возможность при необходимости восстановить полную сущность ОТДЕЛ. Значение атрибута СЛУ ОТД НОМ в любом кортеже отношения СЛУЖАЖИЕ должно соответствовать значению атрибута Отд ном в некотором кортеже отношения ОТДелн.
Атрибут такого рода (возможно, составной) называется внешним ключом Доге(Жп (сеу), поскольку его значения однозначно характеризуют сущности, представленные кортежами некоторого другого отношения (т. е. задают значения их пер- ' Как показыаает опыт автора, не всегда и ие все стуленты помнят базовые логические операции.
Для гарантии прияедеи таблицы истинности операций днп (а — конъюнкция), оп (у — дизъюнкция) и нот (з — отрицание): Нот ОН АХП /аде 7а!зе /аае а'ие ггие /аае ггие ггие !где /аае /а!зе /аде /аде ггие 51 Курс Основы баз данных вичного ключа). Конечно, внешний ключ может быть составным, т. е. состоять из нескольких атрибутов. Говорят, что отношение, в котором определен внешний ключ, ссылается на соответствующее отношение, в котором такой же атрибут является первичным ключом. Требование целостности по ссылкам, или требование целостности внешнего ключа, состоит в том, что для каждого значения внешнего ключа, появляющегося в кортеже значения-отношения ссылающейся переменной отношения, либо в значении-отношении переменной отношения, на которую указывает ссылка, должен найтись кортеж с таким же значением первичного ключа, либо значение внешнего ключа должно быть полностью неопределенным (т.
е. ни на что не указывать).* Для нашего примера это означает, что если для служащего указан номер отдела, то этот отдел должен существовать. Заметим, что, как и первичный ключ, внешний ключ должен специфицироваться при определении переменной отношения и представляет собой ограничение на допустимые значения-отношения этой переменной. Другими словами, определение внешнего ключа представляет собой определение ограничения целостности базы данных. Ограничения целостности сущности и по ссылкам должны поддерживаться СУБД. Для соблюдения целостности сущности достаточно гарантировать отсутствие в любой переменной отношения значений-отношений, содержащих кортежи с одним и тем же значением первичного ключа (и запрещать вхождение в значение первичного ключа неопределенных значений). С целостностью по ссылкам дело обстоит несколько сложнее.
Понятно, что при обновлении ссылающегося отношения (вставке новых кортежей или модификации значения внешнего ключа в существующих кортежах) достаточно следить за тем, чтобы не появлялись некорректные значения внешнего ключа. Но как быть при удалении кортежа из отношения, на которое ведет ссылка? Здесь существуют три подхода, каждый из которых поддерживает целостность по ссылкам. Первый подход заключается в том, что вообще запрещается производить удаление кортежа, для которого существуют ссылки (т. е.
сначала нужно либо удалить ссылающиеся кортежи, либо соответствующим образом изменить значения их внешнего ключа). При втором подходе при удалении кортежа, на который имеются ссылки, во всех ссылающихся кортежах значение внешнего ключа автоматически становится полностью неопределенным. Наконец, третий подход (каскадное удаление) состоит в том, что при удалении кортежа из отношения, ' В языке БО1 допускается несколько вариантов определения внешнею ключа, из которых только один полностью соответствует классическому подходу Более подробно мы обсудим зто в следующих лекпиях.
Введение в реляционную модель данных лекция 2 на которое ведет ссылка, из ссылающегося отношения автоматически удаляются все ссылающиеся кортежи. В развитых реляционных СУБД обычно можно выбрать способ поддержания целостности по ссылкам для каждого случая определения внешнего ключа. Конечно, для принятия такого решения необходимо анализировать требования конкретной прикладной области. Заключение Скорее всего, потенциальные читатели этого курса работают или будут работать с какой-либо Я(.П.-ориентированной СУБД. Любая компания, производящая подобные СУБД, называет их реляционными системами. Очень важно отчетливо понимать, какие свойства таких систем действительно являются реляционными, а что в них не вполне соответствует исходным, ясным и строгим идеям реляционного подхода и даже противоречит им.
Это поможет более правильно организовывать базы данных и строить приложения в среде ЯН:ориентированной СУБД, В нескольких лекциях данного курса достаточно подробно обсуждаются возможности текущих стандартов языка ЯО1.:1999 и ЯЯЕ:2003. Но сначала читателям предлагается материал, который представляет реляционный подход в чистом виде. В данной лекции вводится понятийная основа реляционного подхода; определяются основные термины; исследуются фундаментальные следствия базовых определений. Рассматриваемая реляционная модель данных предназначена, прежде всего, для оценки соответствия различных реализаций СУБД общему реляционному подходу. Основы баз данных Курс Лекция 3.