Определение в базе данных связей между таблицами.
Для создания запросов, форм и отчетов, в которых выводятся данные из нескольких таблиц сразу, необходимо установить связи между таблицами. Связь между таблицами устанавливает отношения между совпадающими значениями в ключевых полях, обычно между полями разных таблиц (для удобства рекомендуется задавать для этих полей одинаковые имена). В большинстве случаев с ключевым полем одной таблицы, являющимся уникальным идентификатором каждой записи, связывается внешний ключ другой таблицы.
Для того чтобы определить связь между таблицами, следует добавить таблицы в окно Схема данных (например, с помощью контекстного меню) и перенести с помощью мыши ключевое поле одной таблицы в другую таблицу. Тип создаваемой связи зависит от полей, для которых определяется связь. Окно Схема данных вызывается командой Схема данных меню Сервис. |
|
Рассмотрим типы связей более подробно на примере базы данных "Отдел кадров", в состав которой входят четыре таблицы:
-
Список отделов - перечень всех отделов предприятия;
-
Список сотрудников - индивидуальные данные сотрудников, работающих на этом предприятии;
-
Назначения - распределение сотрудников по отделам, причем каждый сотрудник может работать в нескольких отделах (внутреннее совместительство);
-
Медицинский осмотр - результаты медицинского осмотра сотрудников.
Отношение не определено, если поле КодСотрудника ни в одной из таблиц не является ключевым и не имеет уникального индекса. В запросах, содержащих таблицы с неопределенным отношением, Microsoft Access по умолчанию создает линию объединения между таблицами, но условия целостности данных при этом не накладываются и нет гарантии уникальности записей в любой из таблиц. |
Отношение "один-ко-многим" является наиболее часто используемым типом связи между таблицами. Каждой записи в таблице "Список сотрудников" могут соответствовать несколько записей в таблице "Назначения", а запись в таблице "Назначения" не может иметь более одной соответствующей ей записи в таблице "Список сотрудников". |
Отношение "многие-ко-многим" реализуется только с помощью третьей (связующей) таблицы, ключ которой состоит по крайней мере из двух полей, которые являются полями внешнего ключа в основных таблицах. В нашем примере связующей является таблица "Назначения". С одной стороны каждый сотрудник может иметь несколько назначений, а с другой стороны для каждого отдела тоже может существовать несколько назначений. Таким образом для таблиц "Список сотрудников" и "Список отделов" реализовано отношение "многие-ко-многим": каждый сотрудник может работать в нескольких отделах и каждый отдел может иметь нескольких сотрудников. |
При отношении "один-к-одному" запись в одной таблице может иметь не более одной связанной записи в другой таблице и наоборот. Этот тип связи используют не очень часто, поскольку такие данные могут быть помещены в одну таблицу. Связь с отношением "один-к-одному" используют для разделения очень широких таблиц, для отделения части таблицы по соображениям защиты, а также для сохранения сведений, относящихся к подмножеству записей в главной таблице.
Например, для того чтобы застраховать сотрудников, был проведен медицинский осмотр. Результаты можно поместить в таблицу "Список сотрудников", но в этом случае сложнее защитить данные от несанкционированного просмотра. Поэтому выгоднее хранить эту секретную и, скорее всего, разовую информацию в отдельной таблице Медицинский осмотр. |