Типы реляционных моделей
В зависимости от типа данных можно использовать одну из нескольких реляционных моделей. Общим в них является то, что все они содержат дочерние (их также называют зависимыми и управляемыми) и родительские (другое название – первичные и управляющие) таблицы. Дочерняя таблица зависит от родительской – та дополняет своими данными ее соответствующие записи. В рассмотренном примере таблица Контакты была дочерней, так как ее записи дополнялись уникальными атрибутами компаний, содержащимися в таблице Компании.
Модель «один ко многим»
Наиболее распространенная реляционная модель – эта та, в которой одной записи в родительской таблице соответствует несколько записей в дочерней. Такой тип модели называется один ко многим. Рассмотренный пример базы данных торговых представителей – реализация именно такой модели, поскольку одной записи таблицы Компании соответствовало несколько записей таблицы Контакты (другими словами, у одной компании могло быть несколько агентов). В этой модели слово «много» относится к таблице, содержащей вторичный ключ.
Модель «один к одному»
Если данные требуют того, чтобы одной записи родительской таблицы соответствовала ровно она запись дочерней, такая модель называется один к одному. Одной из причин необходимости реализации такой модели является разделение данных на более и менее конфиденциальные с целью повышения общей безопасности информации в программе. К примеру, в больнице разные типы данных о пациенте формируют собой отдельный тематический класс. В этом случае будет практичным выделить класс общедоступных данных (адрес, телефон, имя, фамилия и т.п.) и класс данных истории болезни. Такой подход позволит защитить конфиденциальные медицинские данные, установив на каждую из таблиц отдельные права доступа. Обе эти таблицы могут связываться по одному полю первичного ключа (общего в обеих таблицах) – идентификатору пациента.
Модель «многие ко многим»
В некоторых случаях несколько записей одной таблицы могут быть связаны с несколькими записями другой. Такая модель называется многие ко многим. В этом случае не существует какого – либо конкретного метода определения общего поля.
Пусть есть таблица Счета и таблица Заказы. Один и тот же товар может встречаться во множестве счетов, а каждый счет может включать в себя несколько товаров. В этой модели обе таблицы являются родительскими. Для установки связи должно существовать общее поле. В данном случае выход состоит в создании третий таблицы (называемой реляционной), которая будет дочерней для обеих родительских. Это будет таблица Заказано (табл. 10). В этой таблице содержатся вторичные ключи как из таблицы Счета, так и из таблицы Заказы, наряду с полем количества товара.
Таблица 10. Структура таблицы Заказано
Поле
|
Описание
|
КодСчета
|
Вторичный ключ из таблицы Счета
|
КодТовара
|
Вторичный ключ из таблицы Заказы
|
Количество
|
Заказанное количество товаров
| Обеспечение целостности данных
Базы данных, работающие с несколькими связанными таблицами, должны обеспечивать согласованность между ними (т.е. целостность данных). Целостность данных поддерживается рядом правил. Например, таблица Компании в базе данных торговых представителей содержит запись для компании Ромашка, а в таблице Контакты записаны три ее торговых представителя. Если удалить запись об этой компании из таблицы контрагентов, все три записи таблицы Контакты окажутся не связанными ни с одной записью таблицы Компании. Дочерние записи, не имеющие соответствующих им записей в родительской таблице, называют висячими.
Во избежание появления висячих записей нужно постоянно уделять внимание согласованности ссылок в базе данных. В частности, следует особо точно выполнять следующие операции:
-
Удаление записи в родительской таблице, которая имеет связанные записи в дочерней;
-
Добавление записи в дочернюю таблицу, которая не связана ни с одной записью родительской (общее поле или не содержит значения, или содержит значение, отсутствующее в родительской таблице).
Установка отношений между таблицами
В первую очередь нужно установить связи: выбрать в меню команду Сервис - Схема данных или щелкнуть на одноименной кнопке панели инструментов Базы Данных. Откроется окно схемы данных. Линии, соединяющие блоки отдельных таблиц, называются линиями объединениями.
Добавление таблиц в окно Схема данных
Если нужно установить новую связь между двумя таблицами, их прежде нужно добавить в окно Схема данных:
-
Выбрать в меню команду Связи – Добавить таблицу или щелкнуть на одноименной кнопке панели инструментов. Откроется окно, показанное на рис. 12.
-
Щелкнуть на таблице, которая добавляется.
-
Щелкнуть на кнопке Добавить. Программа добавит выбранную таблицу в окно схемы данных.
-
Для добавления других таблиц нужно повторить действия 2-3.
-
Щелкнуть на кнопке Закрыть.
Рис. 12. Это диалоговое окно используется для добавления
таблиц в окно Схема данных
Объединение таблиц
Для создания объединения двух таблиц следует:
-
Добавить в окно Схемы данных все необходимые таблицы.
-
Размесить поля данных в блоках таблиц так, чтобы были видны те из них, которые будут использоваться в связях.
-
Щелкнуть на одном из связываемых полей и перетянуть его поверх связанного поля другой таблицы. Программа откроет диалоговое окно Изменение связей, показанное на рис. 13.
Рис. 13. Диалоговое окно Изменение связей открывается при
перетягивании в окне Схема данных связанных полей друг на друга
-
В таблице диалогового окна будут отображены названия связываемых полей. Если эти названия неверны, можно открыть список полей каждой из таблиц и выбрать нужное поле.
-
Чтобы обеспечить целостность данных в базе, нужно установить флажок в соответствующем поле этого окна, тогда активными станут два других поля флажков, а именно:
Каскадное обновление связанных полей. Если этот флажок установлен и значение поля первичного ключа родительской таблицы изменяется, программа автоматически вносит изменения в соответствующие вторичные ключи всех связанных таблиц. К примеру, если изменить значение поля КодКомпании в таблице Компании, во всех связанных записях таблицы Клиенты также изменится поле КодКомпании.
Каскадное удаление связанных полей. Если этот флажок установлен и некоторая запись родительской таблицы удаляется, программа автоматически удалит соответствующие записи всех связанных таблиц. К примеру, если некоторую запись в таблице Компании удалить, все связанные записи таблицы Контакты также будут автоматически удалены программой.
-
Для настройки типа связи щелкнуть на кнопке Объединение, после чего откроется диалоговое окно Параметры объединения (рис. 14). В этом окне установить переключатель в нужное положение и щелкнуть на кнопке ОК, после чего программа вернется в окно изменения связей.
-
Щелкнуть на кнопке Создать. Программа создаст объединение с выбранными параметрами и отобразит в окне схемы данных между таблицами соответствующую линию.
Рис. 14. Диалоговое окно параметров объединения
служит для выбора типа связи
Редактирование связи
Если нужно изменить параметры установленной связи, их можно отредактировать в окне Изменение связей. Для выбора соответствующей связи достаточно щелкнуть на ней в окне схемы данных и выбрать в меню команду Связи – Изменить связь (или щелкнуть правой кнопкой на этой линии объединения и выбрать в контекстном меню команду Изменить связь). Откроется диалоговое окно Изменение связей, в котором можно внести все необходимые изменения параметров.
|