С.Д. Кузнецов - Основы баз данных (1121716), страница 36
Текст из файла (страница 36)
Некоторые связи бы вают настолько сильными (конечно, в случае связи «один ко многим»), что при удалении опорного экземпляра сущности (соответствуюШего концу связи «один») нужно удалить и все экземпляры сушности, соответствуюшие концу связи «многие», Соответствуюшее требование каскадного улаления можно специфицировать при определении связи. ° Домены. Как и в случае реляционной модели данных, в некоторых случаях полезна возможность определения потенциально допустимого множества значений атрибута сушности (домена). 1т2 Лекция 9 ЕН-диаграммы вылета, аэропорт назначения, ЭЛЕМЕНТ РАСпиСАНия с атрибутами дата- время вылета, бортовой номер самолета, тип самолета и ГОРОД. Уникальным идентификатором сущности РЕИС является атрибут номер рейса, уникальный идентификатор ЭЛЕМЕНТ РАСПНСАНИя состоит из атрибута дата вылета и конца связи КОГДА, нА чем.
Мы видим, что ни в одном типе сущности больше нет атрибутов, определяемых частью уникального идентификатора. Свойства второй нормальной формы удовлетворяются, и мы имеем более качественную диаграмму. Третья нормальная форма Ей-диаграммы В третьей нормальной форме устраняются атрибуты, зависящие от атрибутов, не входящих в уникальный идентификатор. Эти атрибуты являются основой отдельной сущности. Взглянем еще раз иа тип сущности элемент РАСпИСАния на рис. 9.10 (Ь). Конечно, каждый день каждый рейс выполняется только одним самолетом, поэтому бортовой номер самолета полностью зависит от уникального идентификатора.
Но бортовой номер является уникальной характеристикой каждого самолета, и от этой характеристики зависят все остальные характеристики, в частности тип самолета. Другими словами, мелщу уникальным идентификатором и другими атрибутами типа сущности элемент РАСпиСАНИЯ имеются следующие функциональные зависимости: (КОГДА, НА ЧЕМ, дата-время вылета) бортовой номер самолета (КОГДА, НА ЧЕМ, дата-время вылета) тип самолета бортовой номер самолета- тип самолета Каквидно,имеетсятранзитивнаяНЭ(КОГДА, нА чем, дата вылета) тип самолета, и наличие этой НЭ вызывает нарушение требования третьей нормальной формы. На самом деле, тип сущности элемент РАСпиСАНИЯ на рис. 9.10 (Ь) включает в себя (по крайней мере, частично) тип сущности САМОЛЕТ.
Это вызывает избыточность хранения и затуманивает смысл диаграммы. На рис. 9.11 показан нормализованный вариант диаграммы, в котором все сущности находятся в третьей нормальной форме. Более сложные элементы Ей-модели До сих пор мы рассматривали только самые основные и наиболее очевидные понятия ЕВ-модели данных. К числу некоторых более сложных элементов модели относятся следующие.
° Подтипы и супертипы сущностей. Подобно тому как зто делается в языках программирования с развитыми типовыми системами (например, в язы- Лекция 9 ЕН-диаграммы Зти и другие усложненные элементы модели данных «Сущность- Связь» делают ее более мошной, но одновременно несколько затрудняют ее использование. Конечно, прн реальном применении Ей-диаграмм для проектирования баз данных необходимо ознакомиться со всеми возможностями. Ниже мы подробнее обсудим два элемента из числа упомянутых выше — супертипы и подтипы сущности, а также приведем пример сущности с взаимно исключающими связями. Наследование типов сущности и типов связи Сущность может быть расщеплена на два или большее число взаимно исключающих подтипов, каждый из которых включает общие атрибуты и/или связи.
Зги общие атрибуты и/или связи явно определяются один раз на более высоком уровне. В полтинах могут определяться собственные атрибуты и/или связи. В принципе, подтипизация может продолжаться на более низких уровнях, но опыт использования Ей-модели прн проектировании баз данных показывает, что в большинстве случаев оказывается достаточно двух-трех уровней. Если у типа сущности л имеются подтипы вь в„.,., в„, то: (а) любой экземпляр типа сущности вь в„..., в,, является экземпляром типа сущности я (включение); (Ь) если а является экземпляром типа сущности л, то а является экземпляром некоторого подтипа сущности в, (( = 2, 2, ..., и) (отсутствие собственных экземпляров у супертипа сущности); (с) нидлякакихподтиповв,ив, (з, 7' = 2, 2, ..., а) несуществует экземпляра, типом которого одновременно являются типы сущности в, и в, (разъединенность подтипов).
Тип сущности, на основе которого определяются подтипы, называется супертипом. Как мы видели выше, подтипы должны образовывать полное множество, т. е. любой экземпляр супертипа должен относиться к некоторому подтипу. Иногда для обеспечения такой полноты приходится определять дополнительный подтип пвочик. Пример супертипа лктлткльный лпллклт и его подтипов лэропллн, ккртолкт, птицклкт и прочик показан на рис. 9.12. У подтипа лэвопллн имеются два собственных подтипа — лллнкр и моторный олмолкт.
Для супертипа сущности лктлткльннй ллллвлт определен атрибут максимальная дальность полета и необязательная связь «многие ко многим» с типом сущности пилот. Зти атрибут и связь наследуется всеми подтипами этого супертипа сущности. У непосредственного подтипа сущности лэролллн определяется один дополнительный атрибут, так что в совокупности у данного типа сущности имеются два атрибута максимальная дальность полета и размах крыльев и одна унаследованная связь с типом сушно- 173 Основы бвз данных Курс сти ПИЛОТ. У подтипа второго уровня МОтОРНЫН САМОЛЕТ супертипа АЭРОПЛАН определяется один дополнительный атрибут мощность мотора и одна дополнительная (обязательная) связь с типом сущности АВРОПРОМ.
Тем самым, у типа сущности моторный слмолет имеются три атрибута: два унаследованных — максимальная дальность полета и размах крыльев и один собственный — мощность мотора, а также две связи: одна унаследованная — с типом сущности пилот и одна собственная — с типом сущности АЭРОДРОМ. И так далее. Понятно, что для типа сущности пРОчие, скорее всего, бессмысленно определять собственные атрибуты и связи, так что свойства этого типа будут совпадать со свойствами его супертипа. Как же следует понимать диаграмму, представленную на рис.
9.12? Если начинать от супертипа, то диаграмма изображает летлтельный АППАРАТ, который должен быть АЭРОПЛАНОМ, ВЕРтОлетОН, птиделетсм или другим летАтельным АПЛАРАтом. Если начинать от подтипа (например, сущности ВЕРТОлет), то это ВЕРтолет, который относится к типу летАтельноГО АПЛАРАтА. Если начинать от подтипа, который является одновременно супертипом, то это АЭРоплАН, который относится к типу летАтельнОГО АппАРАтА и должен быть плАнеРОм или мотОРнмм сАмОлетОм. В механизме наследования ЕВ-модели допускается наличие двух или более разбиений сущности на подтипы.
Например, тип сущности ЧЕЛОВЕК может быть расщеплен на подтипы по профессиональному признаку (проГРАммист, дояРКА и т, д.), а может быть расщеплен и по половомупризнаку(муечинА, женщинА). Рис. 9.12. Супертипы и подтипы сущности 174 Лекция 9 ЕЯ-диаграммы Взаимно исключающие связи Пример диаграммы из двух сущностей с взаимно исключающими связями показан на рис. 9.13(а). Самолет может находиться в рабочем состоянии, и тогда у него имеется один и только олин пилот. Или же самолет может находиться на ремонте на одном из нескольких возможных авиаремонтных предприятий (каждое предприятие может производить ремонт нескольких самолетов). В данном случае для каждого экземпляра типа сущности слмолет должен существовать экземпляр одной из указанных связей. Для экземпляров типа сущности СлмолЕТ, соответствующих исправным самолетам, должен существовать экземпляр связи «один к одному» с экземпляром типа сущности пилот, а экземпляры, соответствующие неисправным самолетам, должны участвовать в экземпляре типа связи «многие к одному> с экземпляром типа сущности АВИАРемонтное предприятие.
Как показано на рис. 9.! 3()э), диаграмма со взаимно исключающими связями из рис. 9.13(а) может быть преобразована к диаграмме без взаимно исключающих связей путем введения подтипов. Поскольку любой самолет может быть либо исправным, либо неисправным, можно корректным образом ввести два подтипа супертипа САМОЛЕТ вЂ” ИСПРАВНЫЙ САМОЛЕТ и неиспрлвный слмолет. На уровне супертипа сущности связи не определяются. Для подтипа испнлвный слмолет определяется обязательная связь «один к одному» с типом сущности пилот, а для подтипа неиспрлпный сл- Рис.
9.13. Пример ЕК-диаграммы со взаимно исключающими связями 175 Основы баз данных Курс молет определяется обязательная связь «многие к одному» с типом сущности АВИАРЕМОнтнОе ЛРЕППРиятие. Заметим, что для того чтобы описанная схема реализации механизма взаимно исключающих связей на основе механизма наследования действительно могла работать, в средствах манипулирования данными ЕК-модели должна быть предусмотрена возможность динамического изменения типа сущности у экземпляра.
Конкретно для нашего случая требуется возможность изменения типа экземпляра сущности ИСПРАЕНЫЙ САМОЛЕТ на тип сущности неиспРАнный сАНОлет, и наоборот (исправный самолет может ломаться, неисправный самолет — приводиться в рабочее состояние). Конечно, при такой смене типа должен изменяться и экземпляр связи. Заметим, что в рассматриваемом случае мы имеем дело с ограниченным динамическим изменением типа экземпляра, поскольку и исправные, и неисправные самолеты являются экземплярами супертипа САМОЛЕТ. Получение реляционной схемы из Ей-диаграммы Опишем типовую многошаговую процедуру преобразования ЕК-диаграммы в реляционную (более точно, в Я~).-ориентированную) схему базы данных. Базовые приемы Каждый простой тип сущности превращается в таблицу. (Простым типом сущности называется тип сущности, не являющийся подтипом и не имеющий подтипов.) Имя сущности становится именем таблицы.
Экземплярам типа сущности соответствуют строки соответствующей таблицы. Каждый атрибут становится столбцом таблицы с тем же именем; может выбираться более точный формат представления данных. Столбцы, соответствующие необязательным атрибутам, могут содержать неопределенные значения; столбцы, соответствующие обязательным атрибутам, — не могут. Компоненты уникального идентификатора сущности превращаются в первичный ключ таблицы.
Если имеется несколько возможных уникальных идентификаторов, для первичного ключа выбирается наиболее характерный. Если в состав уникального идентификатора входят связи, к числу столбцов первичного ключа добавляется копия уникального идентификатора сущности, находящейся на дальнем конце связи (этот процесс может продолжаться рекурсивно, и в общем случае может привести к зацикливанию). Для именовании этих столбцов используются имена концов связей и/или имена парных типов сущностей. Связи «многие к одному» (и «один к одному») становятся внешними ключами, т.