Мастер подстановок и анализатор таблиц хорошо выполняют свою работу, но создавать связи можно и самостоятельно. Сначала, щелкнув на кнопке
Схема данных на панели инструментов, откройте окно Схема данных, показанное на рис. 6.11. Если кнопки не видно, нажмите клавишу <F11> для перехода в окно
База данных.
В окне Схема данных представлено два списка полей, один для таблицы Растения, а другой — для таблицы
Типы (если в окне ничего нет, щелкните на кнопке Отобразить все связи на панели инструментов
Схема данных). Кроме того, две таблицы соединены так называемой соединительной линией. При создании поля подстановки для поля
Номер типа в таблице Растения эта связь была автоматически создана мастером.
При необходимости создать связь нужно перетащить поле из одного списка в другой. Как правило, поле первичного ключа перемещается на аналогичное поле первичного ключа связанной таблицы. Присмотритесь к соединительной линии — она связывает два поля
Номер типа.
Имена полей первичного ключа выделяются полужирным шрифтом, поэтому найти их несложно. Большая часть постоянных связей между таблицами создается с помощью окна
Схема данных.
Сейчас нам необходимо создать связь между таблицами Растения и Каталоги, чем и займемся.
1. Щелкните на кнопке Отобразить таблицу на панели инструментов окна Схема
данных.
2. В диалоговом окне Добавление таблицы выберите значение Каталоги и щелкните на кнопке
Добавить. Кроме того, можно дважды щелкнуть на указанном значении.
3. Закройте диалоговое окно, щелкнув на кнопке Закрыть.
4. Выберите поле Имя в списке Каталоги, но не отпускайте кнопку
мыши. Внешний вид указателя мыши изменится, превратившись в такой, как показано
на рис.6.12.
Рис. 6.12. При переносе поля из одного списка в другой указатель мыши изменяет свой вид
5. Продолжая удерживать кнопку мыши нажатой, перетащите поле Имя на поле
ИмяКаталога в списке Растения и отпустите кнопку. Появится диалоговое окно
Изменение связей.
6. Установите флажок Обеспечение целостности данных, как показано на рис. 6.13, и щелкните на кнопке
Создать (принцип сохранения целостности связей описан в следующем разделе этой главы).
Рис. 6.13. Определение параметров связей в диалоговом окне Изменение связей
На рис. 6.14 показана новая связь между двумя таблицами. Обратите внимание, что по своему внешнему виду новая соединительная линия отличается от линии, соединяющей таблицы
Растения и Типы.
Различные типы связей
В предыдущем разделе была представлена новая концепция связи типа «один-множество», установленной между таблицами Растения и Каталоги. Всего существует три типа связей, подробное описание которых выходит за рамки данной книги, поэтому ограничимся лишь поверхностным знакомством с ними.
Рис. 6.14. Только что созданная связь показана соединительной линией
Пока что не стоит задумываться о различиях типов связей, ведь Access проделывает немалую работу для автоматической обработки связей между таблицами.
Изменение связи
Мы уже умеем создавать связь, а теперь попробуем ее изменить. При этом мы воспользуемся принципом целостности данных для обеспечения связи между таблицами
Растения и Типы. Под целостностью данных будем подразумевать набор правил, защищающих данные от бессмысленных изменений. Возьмем, к примеру, связь между растениями и типами. Что, если удалить первую строку из таблицы
Типы? Мы не сможем просмотреть описание растений с номером типа, равным 1. Именно здесь «придет на помощь» функция целостности связей, которая сейчас будет использоваться с уже существующей связью.
Откройте диалоговое окно Изменение связей, дважды щелкнув на связи между таблицами
Растения и Типы. Установите флажок Обеспечение целостности данных и щелкните на кнопке
ОК (а не на кнопке Создать, как это делалось нами ранее — см. рис. 6.13).
В результате изменения связи между таблицами Растения и Типы соответствующим образом изменится и внешний вид соединительной линии (рис. 6.15). Как видите, связь между таблицами представляет собой отношение «один-ко-многим» с поддержкой функции целостности связи.
Рис. 6.15. Обновленная соединительная линия между таблицами Растения и Типы
В диалоговом окне Изменение связей имеется еще несколько элементов управления (см. рис. 6.13). Рассмотрим их предназначение.
Закройте окно Схема данных и щелкните на кнопке Да, чтобы подтвердить корректность внесенных изменений.
Обеспечение целостности данных
Ранее в окне Изменение связей (рис. 6.13) был установлен флажок Обеспечение целостности данных. Принцип обеспечения целостности подразумевает необходимость использования набора правил, защищающих данные, поскольку Access запрещает добавление или изменение некоторых записей. Таким образом, обеспечение целостности данных позволяет:
Эти правила станут более понятными при выполнении практического задания, поэтому вернемся к таблицам и внесем в них некоторые изменения. Сначала, открыв таблицу
Каталоги, попробуйте удалить первую запись. При этом появится предупреждение, которое вы видите на рис. 6.16. Щелкните на кнопке
ОК.
Рис. 6.16. Функция обеспечения целостности не позволит удалить запись каталога Фермер
Запись для каталога Фермер не удалось удалить по той причине, что два растения — космея и германская ромашка — связаны с каталогом. До тех пор, пока записи о растениях не будут удалены из таблицы
Растения, в каталоге Фермер от них избавиться не удастся.
Удаление этой записи, будь оно возможно, привело бы к появлению «одиночки» — связанной записи, значение внешнего ключа которой (в данном случае ключа каталога
Фермер) не связано с записью соответствующей таблицы. Другими словами, в случае удаления записи каталога
Фермер стало бы невозможно узнать, где были приобретены семена ромашки и космеи. Может быть, это не покажется большой проблемой, но как насчет информации о клиентах, разместивших тот или иной заказ? Ведь сведения такого рода для нас «жизненно необходимы».
Теперь посмотрим, что произойдет при попытке изменить значение первичного ключа. В таблице
Каталоги попробуйте изменить название Фермер на Фермерша. При этом символ ввода будет перемещен на соседнюю строку. Изменение записи приведет к появлению предупреждения о невозможности ее удаления, поскольку таблица
Растения содержит связанные записи. Щелкните на кнопке ОК, а затем на кнопке < Esc>. Причина появления сообщения та же, что в предыдущем случае: изменение названия каталога привело бы к появлению в таблице
Растения «одиночек», а именно растений космея и ромашка.
Если убран флажок Обеспечение целостности данных, Access позволяет обновить любое значение или добавить/удалить любую запись, когда не изменится тип данных и не нарушаются правила проверки достоверности, описанные в главе 11, «Настройка таблиц». По этой причине флажок желательно не снимать. Кроме того, не следует устанавливать флажки каскадного обновления, не имея на то веского основания, и тем более не рекомендуется оставлять их постоянно установленными.