Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 700276.doc
Скачиваний:
11
Добавлен:
01.05.2022
Размер:
1.94 Mб
Скачать

4.3. Объектное моделирование

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

При этом проявляется ограниченность реляционной модели данных в следующих моментах:

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

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

- хотя весь процесс проектирования БД происходит на ос­нове учета зависимостей между данными, реляционная модель не дает каких-либо средств для представления этих зависимостей;

- несмотря на то, что процесс проектирования начинается с выделения некоторых существенных для приложения объектов предметной области ("сущностей") и выявления связей между этими сущностями, реляционная модель данных не располагает какого-либо аппарата для разде­ления сущностей и связей.

Необходимость в более удобных и мощных средствах моде­лирования предметной области поставила перед проектировщи­ками БД задачу семантического моделирования данными.

Наиболее часто на практике семантическое моделирование используется на первой стадии проектирования БД. При этом в терминах семантической модели производится концептуальная схема БД, которая затем преобразуется к реляционной схеме.

Этот процесс выполняется под управлением методик, в которых достаточно четко оговорены все этапы такого преобразования. В результате производится реляционная схема БД в 3НФ.

В настоящее время проводятся исследовательские разработки над БД в семантической модели, то есть СУБД, основанной на семантической модели данных. При этом рассматриваются два варианта - обеспечение пользовательского интерфейса на основе семантической модели данных с автоматическим отображением отношений в реляционную модель данных и прямая реализация СУБД, основанная на какой-либо семантической модели данных.

Наиболее близко ко второму подходу находятся современные объектно-ориентированные СУБД, модели данных которых по многим параметрам близки к семантическим моделям.

Рассмотрим одну из наиболее важных и распространенных семантических моделей данных - модель "Сущность-Связи" (часто ее называют кратко ER-моделью). На использовании разновидностей ER-моделей основано большинство современ­ных подходов к проектированию реляционных БД.

Моделирование предметной области базируется на использо­вании диаграмм, включающих небольшое число разнородных компонентов. В связи с наглядностью представления концепту­альных схем БД ER-модели получили широкое распространение в системах, поддерживающих автоматизированное проектирова­ние реляционных БД.

Основными понятиями ER-модели являются сущность, связь и атрибут.

Сущность - это реальный или представляемый объект, ин­формация о котором должна сохраняться и быть доступна. В диа­граммах ER-модели сущность представляется в виде прямо­угольника, содержащего имя сущности. При этом имя сущности -это имя типа, а не некоторого конкретного элемента этого типа. Например, на рис. 4.11 приведена сущность ИНСТИТУТ с при­мерными объектами Политехнический и Железнодорожный.

ИНСТИТУТ

Политехнический

Железнодорожный

Рис. 4.11. Сущность ИНСТИТУТ

Каждый элемент сущности должен быть отличим от любого другого элемента той же сущности, что аналогично требованию отсутствия кортежей-дубликатов в отношениях.

Связь - это графически изображаемая ассоциация, устанав­ливаемая между двумя сущностями. Эта ассоциация всегда является бинарной и может существовать между двумя разны­ми сущностями или между сущностью и ей же самой - послед­ний вид связи называют рекурсивной. В любой связи выделя­ются два конца, на каждом из которых указывается имя конца связи, степень конца связи (сколько элементов данной сущно­сти связывается) и обязательность связи (то есть любой ли элемент данной сущности должен участвовать в этой связи)

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

На рис. 4.12 приведен пример связи между сущностями ЗА­ДАЧА и СТУДЕНТ. При этом конец связи с именем "для" позво­ляет соединить с одним студентом более одной задачи, причем каждая задача должна быть связана с каким-либо студентом. Ко­нец сущности с именем "решает" означает, что каждая задача может решаться только одним студентом, причем студент может и не иметь задачи.

Рис. 4.12. Связь сущностей ЗАДАЧА-СТУДЕНТ

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

На рис. 4.13 изображена рекурсивная связь, соединяющая сущность ЧЕЛОВЕК с ней же самой. Конец связи с именем "учащийся" устанавливает тот факт, что человек может высту­пать один или несколько раз в жизни в роли учащегося. Конец связи с именем "студент" означает, что не каждый человек был студентом.

Студент

Рис. 4.13. Рекурсивная связь сущностей

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

Как и в реляционных схемах БД, в ER-схемах вводится по­нятие нормальных форм, причем их смысл очень близко соот­ветствует смыслу реляционных нормальных форм. Заметим, что формулировки нормальных форм ER-схем делают более понятным смысл нормализации реляционных схем. Приведем только очень краткие и неформальные определения трех пер­вых нормальных форм.

В 1НФ ER-схемы устраняются повторяющиеся атрибуты или группы атрибутов, то есть производится выявление неявных сущностей, "замаскированных" под атрибуты.

Во 2НФ устраняются атрибуты, зависящие только от части уникального идентификатора. Эта часть уникального идентифи­катора определяет отдельную сущность.

В 3НФ устраняются атрибуты, зависящие от атрибутов, не входящих в уникальный идентификатор. Они являются основой отдельной сущности.

К числу более сложных элементов ER-модели относятся следующие:

подтипы и супертипы сущностей. Как в языках объект­но-ориентированного программирования, вводится воз­можность наследования типа сущности, исходя из одного или нескольких супертипов;

связи "многие-со-многими". Иногда бывает необходимо связывать сущности таким образом, что с обоих концов связи могут присутствовать несколько экземпляров сущности;

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

каскадные удаления экземпляров сущностей. Некоторые связи бывают настолько сильными, что при удалении опорного экземпляра сущности (соответствующего концу связи "один") нужно удалить и все экземпляры сущности, соответствующие концу связи "многие". Соответствую­щее требование "каскадного удаления" можно сформули­ровать при определении сущности;

домены. Как и в случае реляционной модели данных, бывает полезна возможность определения потенциаль­но допустимого множества значений атрибута сущно­сти (домена).

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

Получение реляционной схемы из ER-схемы осуществляется следующим образом

- каждая простая сущность превращается в отношение. Простая сущность - сущность, не являющаяся подтипом и не имеющая подтипов. Имя сущности становится именем отношения;

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

- компоненты уникального идентификатора сущности пре­вращаются в первичный ключ отношения. Если имеется несколько возможных уникальных идентификаторов, вы­бирается наиболее удобный. Если в состав уникального идентификатора входят связи, к числу столбцов первич­ного ключа добавляется копия уникального идентифика­тора сущности, находящаяся на дальнем конце связи (этот процесс может продолжаться рекурсивно). Для именования этих столбцов используются имена концов связей и/или имена сущностей;

- связи "многие к одному" и "один к одному" становятся внешними ключами. То есть делается копия уникального идентификатора с конца связи "один", и соответствую­щие столбцы составляют внешний ключ. Необязательные связи соответствуют столбцам, допускающим неопреде­ленные значения; обязательные связи - столбцам, не до­пускающим неопределенные значения;

- индексы создаются для первичного ключа, внешних клю­чей и тех атрибутов, которые предполагается использо­вать в запросах;

- если в концептуальной схеме присутствовали подтипы, то возможны два способа: все подтипы в одной таблице или для каждого подтипа - отдельная таблица. При при­менении первого способа отношение создается для наи­более внешнего супертипа, а для подтипов могут созда­ваться представления. В отношение добавляется по край­ней мере один столбец, содержащий код ТИПА; он ста­новится частью первичного ключа. При использовании второго метода для каждого подтипа первого уровня (для более нижних - представления) супертип воссоздается с помощью представления:

- имеется два способа работы при наличии исключающих связей: общий домен и явные внешние ключи. Если ос­тающиеся внешние ключи все в одном домене, то есть имеют общий формат, то создаются два столбца: иденти­фикатор связи и идентификатор сущности. Столбец иден­тификатора связи используется для различения связей, покрываемых дугой исключения. Столбец идентификато­ра сущности используется для хранения значений уни­кального идентификатора сущности на дальнем конце со­ответствующей связи. Во втором случае, если результи­рующие внешние ключи не относятся к одному домену, то для каждой связи, покрываемой дугой исключения, создаются явные столбцы внешних ключей; все эти столбцы могут содержать неопределенные значения.

Таким образом, рассмотренные вопросы позволят на началь­ном этапе правильно спроектировать логическую структуру БД.