- •Е.И. Асташева сетевые базы данных
- •Введение
- •1. Введение в базы данных
- •1.1. Что такое база данных
- •1.2. Структура базы данных
- •2. Иерархическая и сетевая модели организации данных
- •3. Реляционная модель базы данных
- •3.1. Домены и отношения
- •3.2. Целостность данных
- •3.3. Реляционная алгебра
- •3.4. Реляционное исчисление
- •4. Проектирование логической структуры базы данных
- •4.1. Концепция функциональной зависимости
- •4.2. Нормализация базы данных
- •4.3. Объектное моделирование
- •5. Функции защиты базы данных
- •5.1. Транзакции и параллелизм
- •5.2. Безопасность и целостность баз данных
- •6. Дополнительные аспекты реляционной технологии
- •6.1. Представления
- •6.2. Повышение производительности с помощью оптимизации
- •6.3. Домены, отношения и типы данных
- •6.4. Неопределенные значения и трехзначная логика
- •6.5. Распределенные базы данных
- •7. Технология физического хранения и доступа к данным
- •7.1. Основные этапы доступа к базе данных
- •7.2. Управление страницами
- •7.3. Процедура индексирования и хеширования
- •7.4. Сжатие данных
- •Заключение
- •Библиографический список
- •Оглавление
- •394026 Воронеж, Московский просп., 14
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-схемы осуществляется следующим образом
- каждая простая сущность превращается в отношение. Простая сущность - сущность, не являющаяся подтипом и не имеющая подтипов. Имя сущности становится именем отношения;
- каждый атрибут становится возможным столбцом с тем же именем; может выбираться более точный формат. Столбцы, соответствующие необязательным атрибутам, могут содержать неопределенные значения; столбцы, соответствующие обязательным атрибутам - не могут;
- компоненты уникального идентификатора сущности превращаются в первичный ключ отношения. Если имеется несколько возможных уникальных идентификаторов, выбирается наиболее удобный. Если в состав уникального идентификатора входят связи, к числу столбцов первичного ключа добавляется копия уникального идентификатора сущности, находящаяся на дальнем конце связи (этот процесс может продолжаться рекурсивно). Для именования этих столбцов используются имена концов связей и/или имена сущностей;
- связи "многие к одному" и "один к одному" становятся внешними ключами. То есть делается копия уникального идентификатора с конца связи "один", и соответствующие столбцы составляют внешний ключ. Необязательные связи соответствуют столбцам, допускающим неопределенные значения; обязательные связи - столбцам, не допускающим неопределенные значения;
- индексы создаются для первичного ключа, внешних ключей и тех атрибутов, которые предполагается использовать в запросах;
- если в концептуальной схеме присутствовали подтипы, то возможны два способа: все подтипы в одной таблице или для каждого подтипа - отдельная таблица. При применении первого способа отношение создается для наиболее внешнего супертипа, а для подтипов могут создаваться представления. В отношение добавляется по крайней мере один столбец, содержащий код ТИПА; он становится частью первичного ключа. При использовании второго метода для каждого подтипа первого уровня (для более нижних - представления) супертип воссоздается с помощью представления:
- имеется два способа работы при наличии исключающих связей: общий домен и явные внешние ключи. Если остающиеся внешние ключи все в одном домене, то есть имеют общий формат, то создаются два столбца: идентификатор связи и идентификатор сущности. Столбец идентификатора связи используется для различения связей, покрываемых дугой исключения. Столбец идентификатора сущности используется для хранения значений уникального идентификатора сущности на дальнем конце соответствующей связи. Во втором случае, если результирующие внешние ключи не относятся к одному домену, то для каждой связи, покрываемой дугой исключения, создаются явные столбцы внешних ключей; все эти столбцы могут содержать неопределенные значения.
Таким образом, рассмотренные вопросы позволят на начальном этапе правильно спроектировать логическую структуру БД.