Введение в системы БД (542480), страница 76
Текст из файла (страница 76)
Еше раз обратимся к базе данных поставщиков и деталей. Существующие в этой базе данных ссылочные ограничения можно представить посредс~вом слелуюшей ссылочной диаграммы. Б е — БР— ч Р Здесь каждая стрелка обозначает внешний ключ в той переменной-отношении, из которой стрелка выходит. Этот внешний ключ ссылается на некоторый потенциальный ключ той переменной-отношения, на который данная стрелка указывает.
За.иечание. Чтобы лиаграмма была более понятной, иногда желательно помечать каждую стрелку на ссылочной диаграмме именами атрибутов (или единственного атрибута), составляющих соответствующий внешний ключе, как, например, показано ниже. Однако в этой книге подобные пометки будут использоваться лишь в тех случаях, когда их отсутствие может привести к путанице или двусмысленности.
б. Конечно, любая заданная переменная-отношение может быть одновременно и ссылочной, и ссылающейся, как в случае отношения К2 на следующей диаграмме. КЗ вЂ” + К2 — з К1 Е В качестве альтернативы (и, возможно, предпочтительной) можно было бы присвоить внешним ключаи имена, а затем использоват~ зти ичена для обозначения стрелок 316 Часть 11. Реляз(ионная модель Удобно будет ввести термин ссылочный путь. Пусть имеются переменные- отношения Кп, К(п-1), ..., К2, К1, такие, что существует ссылочное ограничение из переменной-отношения Кп в переменную-отношение К(п-!), ссылочное ограничение из переменной-отношения К(п-1) в переменную-отношение К(п-2), ...
и ссылочное ограничение из переменной-отношения К2 в переменную-отношение К1. Рл — э К(п-1) †-> К(п-2) — э ... — э К2 — + К! Тогда цепочка стрелок из Кп в К! будет представлять ссылочный путь из пере- менной-отношения Кп в переменную-отношение К!. 7. Обратите внимание, что переменные-отношения К! и К2 в определении внешнего ключа необязательно различны, т.е.
некоторая переменная-отношение может иметь внешний ключ, значения которого должны совпадать со значениями некоторого потенциального ключа в этой же переменной-отношении. В качестве примера рассмотрим следующее определение переменной-отношения (синтаксис мы поясним по ходу рассмотрения, хотя он должен быть понятен и сам по себе). ЧАК БМР ВЛЯЕ КЕ1АР10М ( ЕМР( ЕМР4,..., МОК ЕМР() ЕМКА, РК1МАК1 КБ1 ( ЕМРЭ ГОКЕ16М КЕ1 ( КЕМИ4Е М6К ЕМР4 КВ ЕМР4 ) КЕГЕКЕМСЕЯ ЕМР ) Здесь атрибут МСК ЕМР() представляет номер того служащего, который является менеджером для служащего, определяемого значением атрибута ЕМР4.
Например, кортеж для служащего с номером 'Е4' в качестве значения атрибута МОК ЕМКА может включать значение 'Е3', которое, по сути, представляет собой ссылку на кортеж переменной-отношения ЕМР для служащего с номером 'Е3'. (Обратите внимание, что в этом примере необходимо переименовать атрибут внешнего ключа, чтобы обеспечить приведенное выше требование из и. 3.) Подобные переменные- отношения иногда называют самоссылающимися. Упражнение. Придумайте какие-нибудь данные для этого примера. 8. Самоссылающиеся переменные-отношения, подобные переменной-отношению ЕМР в предыдущем примере, на самом деле представляют собой специальный случай более обшей ситуации, при которой могут возникать ссылочные иикчы.
Переменные-отношения Кп, К(п-!), ..., К2, К! образуют ссылочный цикл, если переменная-отношение Кп содержит внешний ключ, ссылающийся на переменную- отношение К(п-1), переменная-отношение К(п-1) содержи~ внешний ключ, ссылающийся на переменную-отношение К(л-2), ..., и наконец, переменная- отношение К1 содержит внешний ключ, ссылающийся вновь на переменную- отношение Кп. Или более кратко: ссылочный цикл существует, если есть ссылочный путь из некоторой переменной-отношения Кл к самой себе. Кп — + К(п-1) э К(п-2) э ...
— э К2 †> Р1 — э Рл 9. Соответствие между внешними и потенциальными ключами иногда называют клеем, который объединяет базу данных в единое целое. То же самое можно сказать иначе; такое соответствие представляет собой определенную связь ме- Глава 8. Целостность данных 317 жду кортежами.
Однако обратите особое внимание на то, что не все подобные связи представлены ключами таким способом. Например, существует связь ("совместное размещение") между находящимися в одном городе поставщиками и деталями, представленная атрибутами С1Т1 переменных-отношений Б и Р. В этом случае данный поставщик и данная деталь "размещены совместно", если онн находятся в одном и том же городе. Как видите, эта связь представлена без помощи ключей. 1О.
Исторически понятие внешнего ключа было определено лишь для базовых переменных-отношений — факт„ который сам по себе поднимает некоторые вопросы (подробности приводятся при обсуждении принципа взациозаыеняемости в разделе 9.2 главы 9). Мы не навязываем здесь подобных ограничений, однако для простоты изложения ограничим наше обсуждение лишь базовыми переменными- отношениями (где это не связано с какими-либо различиями). 11. В реляционной модели первоначально требовалось, чтобы внешние ключи ссылались конкретно на первичные ключи, а не просто на потенциальные ключи (например, [8.8]). В общем случае мы отвергаем такое ограничение как излишнее и нежелательное, хотя на практике оно позволяет поддерживать в системе определенный порядок [8.13].
Обычно мы будем следовать такому порядку в наших примерах. 12. Вместе с понятием потенциального ключа реляционная модель содержит следующее правило поддержки ссылочной целостности. ° Ссылочная целостность. База данных не должна содержать значений внешних ключей, не имеющих соответствияэ. Здесь выражение "значение внешнего ключа, не имеющее соответствия" относится к значению внешнего ключа в некоторой переменной-отношении, для которого не существует отвечающего ему значения соответствующего потенциального ключа в соответствуюгцей ссылочной переменной-отношении. Проще говоря, правило утверждает, что если В ссылается на А, то А должно существовать.
Ниже приведен синтаксис для определения внешнего ключа. ЕОЕЕ168 КЕУ ( <спипок элемеитоа> ) ЕЕГЕЕЕЕСЕБ <имя переменной-отношений> Это предложение должно присутствовать в определении ссылающейся переменной- отношения. Дополнительно отметим следующее. ° Каждое значение в параметре <список элементов> представляет собой или параметр <имя атрибута>, определяющий атрибут ссылочной переменной-отношения, или выражение следующего вида.
ЕЕЕАЕЕ <имя атрибута> АБ <имя атрибута> Правило ссьмочной целостности можно рассмапгривать как метаограннченне. Оно означает, чпго лгооа» база дггнггых должна быть объектом оггределенных ограничений целостгности, специфическом ниенна для нее. В совокупноспт эти ограничения горонптругот, что правило ссылочной целосптоспиг не будет нарушено в конкретной базе данньсг. По ходу дела опинетим, что в отношении реляционной.подели обычно считается, чпш она вклгочает другое "метаограничение" — правило целосгпности сущностей.
Однако это правгшо тесно связано с концепцией АгИь-значений, поэтому мы оогложии его обсуждение до главы 18. 318 Часть П. Реляционная модель (В качестве примера построения предложения КЕНАМЕ может служить приведенное выше определение самоссылающейся переменной-отношения ЕМР.) ° Параметр <лмя переменной-отношения> идентифицирует ссылочную переменную- отношение.
Примеры определения внешних ключей неоднократно были представлены в данной книге (например, см. рис. 3.9 в главе 3). Замечание. Как указывалось в разделе 8.5, определение внешнего ключа фактически является сокращенной записью некоторого ограничения базы данных (или определенного ограничения переменной-отношения в случае самоссылаюшейся переменной- отношения), но только если это определение не содержит конкретных "ссылочных операций". В последнем случае определение внешнего ключа становится чем-то большим, чем просто ограничение целостности как таковое.