|
Программирование >> Реляционные базы данных
Пример 3.17. Рассмотрим иерархию (см. рис. 2.22), со-чсржаию четыре оасса: 1. Movie -самый широкий класс, фигурирующий во многих примерах этой главы. 2. Cartoon - подкласс оасса Movie с дополиителы<ым свойством, а именно связью, являющейся множеством кинозвезд под названием voices. 3. MurderMystery - второй подк.часс класса Movie с дополнительным атрибутом weapon. 4. Cartoon-Murderivlystery - подкласс классов Cartoon и IVlurderMystery, не имеющий дополнительных подклассов, но (естественно) обладающий всеми свойствами трех своих н!Шклассов. Схема для Movie прежняя: Movie(tllle, year, length, filmType, studioName, starName). Искогорыс типичные кортежи уже были показаны на рис. 3.13. Для Cartoon к шести атрибутам схемы Movie лобнвляется voice. В результате получается схема с семью атрибутами: Cartoon(lrtle. year, length. filmType. studioName, starName. voice). Для IVlurderMystery получается другое отношение - с шестью атрибутами Movie плюс v/eapon. Схема этого отношения: MurderMystery(title, year, length, filmType, studioName, starName, weapon) И накоиеи, схема отношения Cartoon-MurderMystery содержит шссгь атрибугов Movie и атриб\ты voice и weapon из других надклассов: Cartoon-MurderMystery(tltle, year, length, filmType, studioName, StarName, voice, v/eapon). □ 3.4.2 Представление isa в реляционной модели Философия иерархии isa в E/R-модели заключается в том, что эти иерархии наполнены сущностями, находящимися в связи isa. Значит, вполне естественно создавать отношение для каждого множества сущностей и придавать ему атрибуты только этого множества. Но для идентификации сущностей, связанных с каждым кортежем, необходимо ввести в отношение и ключевые атрибуты каждого множества сущностей. В результате информация для члена некоторого подкласса рассеивается по множеству отношений, что, по-видимому, неизбежно, так как преобразование E/R-модсли в реляционную расщепляет информацию о E/R-атрибутах и связях на отдельные отношения. Отношение для связи isa не создается, скорее, сама эта связь заключается в том, что связанные сущности имеют одни и те же ключевые значения. Пример 3.18. Выразим иерархию, показанную на рис. 2.22, в E/R-модсли. Напоминаем, что релевантная часть E/R-диаграммы была показана на рис. 2.23, который воспроизводится здесь как 3.22. Реляционные схемы, необходимые для представления этой части диаграммы: 1. Отношение Movies(title, year, length, filmType). Оно рассматривалось в примере 3 10. 2. Отношение MurderMystenes(title. year, weapon). Первые два атрибута - ключи для всего множества фильмов, а третий атрибут относится к соответствующем) множеству сущностей. 3. Отношение CartoDns(titie, year) - множество мультфильмов, у которого нет других атриб)тои. кроме ключа для множества фильмов, так как дополнительная информация о фильмах содержится в связи Voices. 4. Отношение Voices(tifle, year, name) соответсгвует связи Voices между Stars и Cartoons. Последний атрибут данного отношения - это ключ для Stars, а первые два - ключ для Cartoons. MurderMystery -(weapon Movies Cartoons Voices ]>- to Stars Рис. 3.22. Иерюрхия фильмов Заметим, что на рис. 3.22 нет множества сушностей, соответствующего классу Cartoons-MurderMystery. Поэтому, в отличие от реляционной модели из примера 3.17, здесь нет и специального отношения для фильмов, которые являются одновременно мультфильмами и детективами. Голоса для них берутся из отношения Voices, оружие - из отношения MurderMysteries, а вся другая информация - из отношения Movies или из сггношения, построенного для одной из связей между множествами Movies, Cartoons и MurderMysteries. Схема отношения Cartoons является подмножеством схемы отношения Voices. Во многих ситуациях отношение Cartoons можно ликвидировать, так как оказывается, что оно содержит только ту информацию, которая уже есть в Voices. Однако в базе данных могут быть немые мультфильмы. В них нет голосов, поэтому утрачивается информация о том, что они являются мультфильмами. Фактически та же проблема возникает в отношении Cartoons из примера 3.17, где при отсутствии голосов нет и упоминания о мультфильме. Она решается с помощью нормализации (см. раздел 3.7). □ 3.4-3 Сравнение различных подходов С каждым из подходов, рассмотренных в двух предыдущих разделах, связаны свои специфические проблемы. При переводе ODL в реляционные модели все свойства объекта сохраняются в одном отношении, но при этом поиск объекта приходится вести в множестве отношений. Например, для определения длины фильма с помощью схемы БД из примера 3.17 пришлось проверить четыре разных отношения, пока не нашлось отношение для класса, в который этот фильм входит. При переводе E/R-диаграмм в реляционные модели ключ объекта повторяется по одному разу лля каждого множества сущностей или связи, к которым этот объект (сущность) принадлежит. Такие повторы требуют дополнительного пространства. Кроме того, для получения информации об одном объекте может потребоваться просмотр множества отношений. Такая ситуация возникает, например, при определении длины детектива и применяемого в нем оружия с помощью схемы БД из примера 3.18. 3.4.4 Применение пустых значений для комбинирования отношений Есть еще один метод представления информации об иерархии классов. Можно использовать особое пустое значение, обозначаемое NULL. Неформально говоря, если NULL -что компонент кортежа для какого-то атрибута, значит, апя этого атрибута в данном кортеже нет подходящего значения. Хотя пустые значения и не являются частью традиционной реляционной модели, фактически они очень полез ны и ифают важную роль в языке запросов SQL (см. раздел 5.9). Используя NULL в качестве значения в кортежах, с иерархией классов можно работать, лишь применяя единственное отношение, имеющее атрибуты для всех спойств, которыми облааают объекты любого класса данной иерархии. Объект представляется с помощью единственного кортежа, имеющего NULL в каадом атрибуте, соответствующем свойству, которое не принадлежит классу этого объекта. Пример 3.19. Применяя такой метод при ре1иении проблемы из примера 3.17, можно построить единственное отногиение по стеме. Movie(title, year, length, filmType, studraName. starName voice, weapon) В такой модели фильм Кто ложно обвинил кролика Родзквра? , являющийся мультипликационным детективом, представлен несколькими кортежами без NULL; каждому го;юсу соогветстпует один кортеж.* Tvc&jowo-мультфильм, но не детектив имеет значение NULL в компоненте weapon, детектив Убийство в восточном экспрессе - в атрибуте voice, а мелодрама Унесенные ветром - в атрибутах voice и weapon D Заметим, что такой подход, как и метод из раздела 3 4 2, позволяет найти в одном отношении кортежи из всех классов данной иерархии. Кроме того, он, как и метод из раздела 3.4.1, позволяет получить всю информацию об объекте из одного отношения. 3-4.5 Упражнения к разделу 3-4 Упрожнение 3-4.1. Конвертируйте пре.аставленную на рис. 3.23 E/R-диаграмму в схему реляционной БД.
computer allocation Рис. 3.23 e/R-диогрсимо 5 Фильм Крпяик Iofhiivp , а котором угястя\тот и кинозиезаы, и озвученные мульт11плик!Ш1юнныс персонажи имел бы кортежи лля каждой п.чры KHHOjBcjja - голос. В обычном .\iy.nbr()njtbvic NULL требуется в агрибуге starName для того, чтобы йписат!. информаиню о вучаишх и не.\ го.юса.х и лругие данные.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |