|
Программирование >> Реляционные базы данных
Другие понятия функциональной зависимости \ Мы считаем, что в левой части функциональной зависимости может быть \ множество атрибутов, а в правой только один. Более того, атрибут, стоящий t I справа, не может появиться в левой части. Однако для краткости допускается комбинировать несколько зависимостей с одинаковыми левыми частями, что- бы получить множество атрибутов справа. Иногда полезна также тривиальная > зависимость, в правой части которой стоит один из атрибутов, находящихся слепа. j В других работах на эту тему часто принимается точка зрения, согласно \ которой левая и правая части зависимости являются произвольными множе- I ствами атрибутов и атрибуты могут находиться одновременно слева и справа, -г Между этими двумя подходами нет существенных различий, но мы будем исходить из того, что ни о.аин атрибуг не входит одновременно в правую I и левую части функциональной зависимости, если явно не оговорено проти- 3 воположное. 3.5-5 Ключи для отношений, выведенных из ODL Преобразовывать ODL-ироекты в отношения несколько сложнее. Для класса ODL может быть декларировано несколько ключей, но среди атрибугов может не быть ни одного ключа. В таком случае в отношение необходимо ввести атрибут, являющийся суррогатом объектного адентификатора для объектов данного класса (см. раздел 3.2.6) Однако независимо от того, имеет ли класс ODL ключ, сформированный из его собственных атрибутов, или приходится использовать суррогатньи ! идентификатор объектов, существуют обстоятельства, при которых ключевые атриб1ты класса не являются ключом лля отношения. Такая проблема юзникает, когда отношения являются частью определения класса. Пусть класс С имеет однозначную связь R с некоторым классом D. Тогда, как предла1алось в разделе 3.2.4, ключ для D вводится в отношение лля С. При этом ключ для С остается ключом для соответствующего отношения. являются ключевыми. Фактически, все атрибуты отношения, полученного из связи типа многне-ко-миогим . могут не быть частью ключа только тогда, когда сама исходная связь имеет атрибут. В таком случае атрибуты отношения удаляются из ключа. □ И наконец, рассмотрим многосторонние связи. Поскольку стрелками, выходящими из связи, все возможные зависимости показать не удается, возникают ситуа-Ш1И, в которы.х ключи не очевидны и приходится детально анализировать, какие именно множества сушностей функииона;1Ьно определяют другие множества Однако одно правило все же есть: Если многосторонняя связь Л содержит стрелку, направленную на множество сущностей £, лля соответствующего этой связи отношения имеется по крайней мере один ключ, который не содержит Е. Конечно, можно сначала преобразовать OOL-праекты п E/R-диаграммы, а хггсм п реляционные модели. Хоти такой по.чхоц позволяет обонтп некоторые проблемы, снязаиныс с прямым иетоаом. рассчотрснны.м в разделе 3.2. существа яе-ча JTO не vieiiH. TevHiiKi к-пя11иоины\ моделей и 4 раздела 3 которую нее равно ВНН]НлТ1ВВлП1еймаа(. не цц - Проблема возникает, коша С имеет многозначную связь R с классом D. Если обра-шенне R однозначно в обратном направлении (т.е. Л-связь типа один-ко-миогим ). тогда, как говорилось в выделенном рамкой тексте Представление связей в одном иапраилснии раздела 3.2.7, (обращение) R можно представить только в отношении для D. Обращение R не представляет для D никакой проблемы, так как в D Оно однозначно. Предположим, оциако, что Л -связь типа многие-ко-многим , т.е. она сама и ее обращение многозначны в С и D. Тогда построенное для С отношение может иметь множество кортежей, описываюши.х один объект класса С. В результате ключ для С не будет ключом для соответствующего отношения; для создания такого ключа придется добавлять ключ для D к ключу для С. Пример 3.25. В примере 3.7 при построении отношения для ODL-класса Movie к атрибутам Movie были добавлены: I Ключ StudioName для класса Studio, с которым класс Movie соединен однозначной связью ownedBy. 2. Ключ StarName дли класса Star (с которым класс Movie соединен многозначной связью stars). Первый из них образуется из однозначной связи и не влияет на ключ для Movie, а второй - из многозначной связи и должен быть добавлен к ключу для Movie. В результате получается (title, year, StarName} Анализ экземпляра отношении Movie на рис. 3.13 показывает, что title и year не являются ключами, но для пшучения ключа к ним достаточно добавить starName. □ В обшем случае, если отношение, построенное для С представляет многозначные связи С. то к.лючи для всех классов, с которыми С соединено этими связями, необ.чодимо добавить к ключу для С. В результате получается ключ для отноитения, преде гавляющего С. Разумеется, если множество связей соединяет С с классом D. то пля каждой такой связи С имеет рахпичные атрибуты, выражающие ключ для D. Парадокс заключается в том, что ключ для ODL-класса может не подходить в качестве ключа для соогвстствующего отношении. Если следовать инструкции построении отношения, данной в разделе 3.2, часто приходится исправлять отношения, построенные этим простым методом. Исправление таких отношений анализируется в разделе 3.7. Здесь же мы рассмотрим, как можно расщепить связи типа многие-ко-мношм из отношения, построенного для любого из связанных классов. Результирующее множество схем отиошениП больше похоже иа то. что получается прямо из множества Е/К-диаграмм. 3.5.6 Упражнения к разделу 3.5 Упрожнение 3.5.1. Рассмотрим отношение, касающееся жителей США и включающее в себя их имена, номера страховых полисов, адресные данные {улицу, город, штат, почтовый код, код региона) и семизначные номера телефонов. Какие функциональные зависимости здесь верны? Что является ключами для этого отношения? Х1ля ответа на этот вопрос нужно знать, как приписываются номера. Например, может ли код региона относиться к двум штатам? Может ли почтовый код относиться к двум кодам региона? Могут ли два человека иметь один и тот же номер стра.чового полиса или один и тот же адрес либо номер телефона? Упрожнение 3.5.2. Рассмотрим отношение, представляющее положение молекул в закрь1том контейнере в определенный момент. Атрибуты: ID молекулы, координаты молекулы х, у и г, скорость молекулы в измерениях х, > и г. Какие функциона;1ьные зависимости здесь верны? Что является ключами? ! Упрожнение 3.5.3. В упражнении 2.3.2 рассматривались четыре различных допущения о связи Births. Для каждого случая укажите ключи отношения, построенного из зтой связи. !! Упражнение 3.5.4. Пусть R - отношение с атрибутами А А.....А . В виде функции от п покажите, сколько надключей имеет Л, если: *а) единственным ключом является Ai; b) единственными ключами являются А, и Aj, c) единственными ключами являются [А Аг) и Мз, А); d) единственными ключами являются М Ai) и Mi, i4j). 3.6 правила функциональной зависимости в этом разделе показано, как логически рассуждать о функциональной зависимости. Допустим, нам предъявили множество зависимостей, которым удовлетворяет некоторое отношение. Часто из этого делается вывод о том. что данное отношение должно удовлетворять и другим конкретным зависимостям, при этом неизвестно даже, какие именно кортежи в.чодят в это отношение. Такая способность открывать дополнительные зависимости играет существенную роль при рассмотрении проектов хороших схем в разделе 3.7, Пример 3.26. Если отношение R с атрибутами А, В и С удовлетворяет функциональным зависимостям А-> В и В-> С, можно сделать вывод, что R удовлетворяет также зависимости .А -> С. Как же получается такой вывод? Чтобы доказать А С, рассмотрим .ава кортежа из /?, совпадающих по А. и покажем, что они совпадают и по С. Пусть кортежи (я, Ь с) и (о, ftj. с,) совпадают по атрибуту А, а порядок атрибутов в кортежах - А, 5, С. Поскольку Л удовлетворяет А Ви кортежи совпадают по А, они совпадают и по В. Значит 61 = 63 и кортежами действительно являются (о, Ь, с,) и (о, 6, ft) где b есть и Ь,. и Поскольку R у.аовлетворяет 5-+ С и кортежи совпадают по В, они соипадают и по С Значит, с, = с т.е. кортежи действительно совпадают по С. Итак, .мы доказали, что любые два кортежа R, совпадающие по А, совпадают и по С. а это и есть функциональная зависимость А С. □
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |