Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции2.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
299.52 Кб
Скачать

Объединение отношений

Иногда отношения, получаемые в результате прямых преобразований из множеств сущностей или связей, нельзя считать наилучшей формой представления определен­ных элементов данных. Один из распространенных вариантов подобных ситуаций та­ков. Имеется множество сущностей £, соединенное посредством связи R типа "многие к одному" с множеством F в направлении от Е к F. Реляционные схемы каждого из отношений, полученных на основе множества Е и связи /?, будут содержать ключ множества Е. Кроме того, в схему отношения для множества Е будут введены также атрибуты Я, не относящиеся к ключевым, а в схему отношения для связи R — собст­венные атрибуты R и ключевые атрибуты множества F. Поскольку связь R относится к типу "многие к одному", все указанные атрибуты обладают значениями, которые однозначным образом определяются на основе ключа множества Е, и их можно объе­динить в одной схеме отношения, состоящей из:

  1. всех атрибутов множества Е

  2. ключевых атрибутов множества F;

  3. собственных атрибутов связи R.

В кортеже для сущности е множества Е, которая не связана ни с одной сущностью множества F, компоненты, отвечающие атрибутам, названным в пп. 2, 3, получат не­которые "нулевые" (null) значения. О значениях null как о средстве представления си­туации, когда содержательное значение компонента кортежа неизвестно или утрачено, мы неформально уже говорили. Понятие "значение пи1l не является частью реляционной модели, но в языке SQL для его обозначения применяется специальное служебное слово, null, и мы будем пользоваться им по мере необходимо­сти,* если в ходе изложения нам потребуется сослаться на "неопределенное" значение.

Пример 3.5. Возвращаясь к примеру "кинематографической" базы данных, отметим, что Owns — это связь типа "многие к одному", соединяющая множества сущностей Movies ("кинофильмы") и Studios ("киностудии") в направлении от Movies к Studios. Процесс "превращения" связи Owns в отношение рассматривался в примере 3.2, а преобразование множества сущностей Movies мы иллюстрировали в примере 3.1. Теперь мы вправе объединить полученные решения в общую реляцион­ную схему отношения. Пример экземпляра такого отношения приведен на рис. 3.7.

title

year

length

film Type

studioName

Star Wars

1977

124

color

Fox

Mighty Ducks

1991

104

color

Disney

Wayne * s World

1992

95

color

Paramount

Рис. 3.7. Объединение отношений Movies и Owns

Стоит объединять отношения таким образом или нет — это вопрос, заслуживаю­щий обсуждения. Сочетание всех атрибутов, зависящих от ключа множества сущно­стей Е, в едином отношении, в определенных случаях сулит дополнительные преиму­щества — даже тогда, когда существует сразу несколько связей типа "многие к одно­му", направленных от £ к другим множествам. Зачастую, например, гораздо проще получить ответ на запрос, касающийся данных, которые размещены в одном отноше­нии, нежели обращаться за теми же данными одновременно к нескольким отношени­ям. Действительно, некоторые системы проектирования баз данных, основанные на ER-модели, выполняют подобное объединение автоматически.

С другой стороны, вероятно, не следует серьезно рассматривать возможность объе­динения отношения для множества Е с отношением для связи Я, которая охватывает £, но не является связью типа "многие к одному", направленной от £ к каким-либо другим множествам. Подобная операция довольно рискованна, поскольку нередко приводит к избыточности данных.

Пример 3.6. Чтобы продемонстрировать, чем отличается плохое решение от хорошего, рассмотрим объединение отношения, представленного на рис. 3.7, с отношением, по­лученным для связи Stars-in типа "многие ко многим". Резуль­тат может выглядеть так, как показано на рис. 3.8.

title

year

length

film Type

studioName

starName

Star Wars

1977

124

color

Fox

Carrie Fisher

Star Wars

1977

124

color

Fox

Mark Hamill

Star Wars

1977

124

color

Fox

Harrison Ford

Mighty Ducks

1991

104

color

Disney

Emilio Estevez

Wayne's World

1992

95

color

Paramount

Dana Carvey

Wayne's World

1992

95

color

Paramount

Mike Meyers

Рис. 3.8. Отношение Movies, включающее сведения об актерах

Преобразование слабых множеств сущностей

Для преобразования слабого множества сущностей в отношение необходимо при­нять во внимание следующее.

  1. Отношение для слабого множества сущностей W как такового должно включать не только собственные атрибуты W, но и ключевые атрибуты всех других мно­жеств, содействующих в формировании ключа множества W. Подобные "вспомогательные" множества на ER-диаграмме легко различимы, поскольку они соединяются с W посредством поддерживающих связей, которые обознача­ются двойными ромбами.

  2. В отношении для любой связи, с которой соединено слабое множество сущно­стей W, должны быть отражены все ключевые атрибуты множества W, в том числе и те, которые "получены" им от других множеств.

  3. Поддерживающая связь R, соединяющая слабое множество сущностей W с другим множеством, помогающим в образовании ключа для W, однако, вовсе не нуждает­ся в преобразовании. Причина заключается в том, что (как упоминалось в преды­дущем разделе ) атрибуты отношения для связи R типа "многие к одному" либо уже присутствуют в отношении для множества W, либо (если речь идет о собствен­ных атрибутах R) могут быть объединены со схемой отношения для множества W.

Разумеется, при формировании ключа слабого множества сущностей на основе до­полнительных атрибутов надлежит позаботиться о том, чтобы не использовать одно

и то же имя атрибута дважды. При необходимости некоторые или все подобные атри­буты следует переименовать.

Пример 3.7. Рассмотрим слабое множество сущностей Crews ("объединения") ER-диаграммы рис. 2.2, которая воспроизведена на рис. 3.9. На основе диа­граммы мы можем получить три отношения, схемы которых выглядят так:

Studios(name, addr) Crews(number, studioName) Unit-of(number, studioName, name)

Первое отношение, studios, создано непосредственно на основе одноименного множества сущностей, предназначенного для хранения информации о киностудиях. Второе отношение, Crews, соответствует слабому множеству сущностей Crews, пред­ставляющему творческие подразделения киностудий. Атрибутами Crews служат клю­чевые атрибуты множества Crews; если бы Crews обладало собственными неключевыми атрибутами, их также пришлось бы ввести в схему отношения Crews. Атрибут studioName отношения Crews суть атрибут пате множества сущностей Studios.

Рис. 3.9. Пример ER-диаграммы со слабым мно­жеством сущностей

Третье отношение, Unit-of, соответствует связи Unit-of Связь в реляционной мо­дели, как мы говорили выше, представляется отношением, в схему которого вводятся ключевые атрибуты множеств, соединяемых этой связью. В нашем случае схема от­ношения Unit-of включает атрибуты number и studioName, образующие ключ сла­бого множества сущностей Crews, и атрибут name аналог атрибута пате множества Studios. Однако, поскольку связь Unit-of относится к типу "многие к одному1', атрибу­ты studioName и name фактически совпадают.

Предположим для примера, что "Disney-crew-#3" — это одно из творческих под­разделений студии "Disney". Тогда во множестве данных для связи Unit-of должен су­ществовать кортеж ("Disney-crew-#3", "Disney"), которому соответствует кортеж (3, Disney, Disney) отношения Unit-of. Обратите внимание, что компоненты этого кортежа, соответст­вующие атрибутам studioName и name, одинаковы, поэтому вполне допустимо осу­ществить их "слияние", что позволит получить более простую схему:

Unit-of(number, name).

Впрочем, теперь необходимость в использовании отношения Unit-of вовсе исключа­ется, поскольку его схема полностью совпадает со схемой отношения Crews. □

Пример 3.8. Обратимся к слабому множеству сущностей Contracts ("контракты"), ко­торое рассматривалось в примере 2.25 и было представлено на ER-диаграмме рис. 2.22. Та же диаграмма приведена и на рис. 3.10. Схема соответствующего отно­шения Contracts выглядит так:

Contracts(starName, studioName, title, year, salary).

Подмножества схем отношений

Изучая пример 3.7, вы могли бы сделать вывод о том, что коль скоро одно отно­шение (назовем его R) обладает набором атрибутов, являющимся подмножеством множества атрибутов другого отношения, S, отношение R может быть исключено из рассмотрения. В общем случае такое утверждение неверно. Отношение R спо­собно содержать информацию, которой нет в S, поскольку дополнительные атрибу­ты S не позволяют перейти от кортежа R непосредственно к кортежу 5.

Пусть, например, налоговая служба пытается (:-). — Прим. перев.) создать отно­шение People (name, ss#) ("люди"), которое содержит информацию об именах по­тенциальных налогоплательщиков и их кодах полисов социального страхования (или каких-либо иных идентификационных кодах) и охватывает даже такую ситуацию, когда человек не имеет доходов и его налоги прежде еще не фиксировались. Службе, вероятно, потребуется и отношение Taxpayers (name, ss#, amount ("налого­плательщики"), в котором отражаются суммы налогов, выплаченные каждым чело­веком в текущем году. Как нетрудно убедиться, схема отношения People является подмножеством схемы отношения Taxpayers, но смысл в хранении идентификаци­онных номеров лиц, не "замеченных" в уплате налогов, т.е. упомянутых в People, но отсутствующих в Taxpayers, для вас, тем не менее, должен быть очевиден.

На самом деле даже совершенно одинаковые наборы атрибутов отношений мо­гут обладать различной семантикой, так что говорить о возможности замены од­ного отношения другим в общем случае нельзя. Примером могут служить отноше­ния Stars (name, address) и Studios (name, address), представляющие объек­ты знакомой вам "кинематографической" базы данных. Хотя схемы выглядят одинаково, мы не имеем права превращать кортежи, описывающие информацию об актерах, в кортежи, содержащие данные о киностудиях, и наоборот.

С другой стороны, если два отношения создаются на основе одной и той же конструкции с участием слабого множества сущностей, то из них, в котором меньше атрибутов, не будет иметь самостоятельного значения. Причина заключа­ется в том, что кортежи отношения, соответствующего поддерживающей связи множества, однозначно совпадают с кортежами отношения, отображающего слабое множество сущностей как таковое. Таким образом, отношение для поддерживаю­щей связи может быть безболезненно отброшено.

Атрибуты starName и studioName это переименованные ключевые атрибуты пате ("имя" или "название") множеств сущностей Stars ("актеры") и Studios ("кино­студии") соответственно, title ("название") и year ("год производства") — ключе­вые атрибуты множества Movies ("кинофильмы"), a salary ("размер заработной пла­ты") — собственный атрибут слабого множества сущностей Contracts. Создание отноше­ний для поддерживающих связей Star-of, Studio-o/и Movie-of лишено смысла, поскольку их схемы представляют собой соответствующие подмножества схемы Contracts.

Между прочим, обратите внимание, что построенное отношение совершенно сов­падает с тем, какое мы могли бы получить, если бы взяли за основу ER-диаграмму рис. 2.7. Напомним, что последняя трактует контракты как трехсторонние связи между "актерами", "кинофильмами" и "киностудиями", а атрибут salary отно­сится непосредственно к связи Contracts.

Явление, проиллюстрированное в примерах 3.7 и 3.8 — связи, "поддерживаю­щие" слабые множества сущностей, не нуждаются в создании соответствующих отношений, — носит универсальный характер. Ниже приведена новая версия пра­вила преобразования в отношения тех множеств сущностей, которые относятся к категории слабых.

Рис. 3.10. Слабое множество сущностей Contracts

  1. Если W является слабым множеством сущностей, построить отношение для IV, схема которого включает следующее:

  1. все атрибуты множества W;

  2. все атрибуты поддерживающих связей для множества W;

  3. все ключевые атрибуты каждого из множеств сущностей Е, соединенных с множеством W посредством поддерживающих связей типа "многие к од­ному" в направлении от W к Е;

  1. Не создавать отношения, соответствующие любым поддерживающим связям для слабого множества W.