Базы данных Microsoft Access 2003

каллы садовые посадка и уход в открытом грунте          

Работа с окном «Схема данных»



Мастер подстановок и анализатор таблиц хорошо выполняют свою работу, но создавать связи можно и самостоятельно. Сначала, щелкнув на кнопке Схема данных на панели инструментов, откройте окно Схема данных, показанное на рис. 6.11. Если кнопки не видно, нажмите клавишу <F11> для перехода в окно База данных.

В окне Схема данных представлено два списка полей, один для таблицы Растения, а другой — для таблицы Типы (если в окне ничего нет, щелкните на кнопке Отобразить все связи на панели инструментов Схема данных). Кроме того, две таблицы соединены так называемой соединительной линией. При создании поля подстановки для поля Номер типа в таблице Растения эта связь была автоматически создана мастером.





Рис. 6.11. Окно Схема данных


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

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

Сейчас нам необходимо создать связь между таблицами Растения и Каталоги, чем и займемся.

1. Щелкните на кнопке Отобразить таблицу на панели инструментов окна Схема данных.

2. В диалоговом окне Добавление таблицы выберите значение Каталоги и щелкните на кнопке Добавить. Кроме того, можно дважды щелкнуть на указанном значении.

3. Закройте диалоговое окно, щелкнув на кнопке Закрыть.

4. Выберите поле Имя в списке Каталоги, но не отпускайте кнопку мыши. Внешний вид указателя мыши изменится, превратившись в такой, как показано на рис.6.12.



Рис. 6.12. При переносе поля из одного списка в другой указатель мыши изменяет свой вид


5. Продолжая удерживать кнопку мыши нажатой, перетащите поле Имя на поле ИмяКаталога в списке Растения и отпустите кнопку. Появится диалоговое окно Изменение связей.

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



Рис. 6.13. Определение параметров связей в диалоговом окне Изменение связей


На рис. 6.14 показана новая связь между двумя таблицами. Обратите внимание, что по своему внешнему виду новая соединительная линия отличается от линии, соединяющей таблицы Растения и Типы.

  •  Цифра 1 радом со списком Каталоги указывает на таблицу первичного ключа или на одну сторону связи — только одна подходящая запись существует в этой таблице, так как связь основана на значении первичного ключа, которое, о чем неоднократно говорилось ранее, должно быть уникальным.
  •  Символ бесконечности радом со списком Растения указывает на существование многочисленных элементов связей - в таблице Растения может быть множество записей, связанных с любой записью, выбранной в таблице Каталоги.


Различные типы связей



В предыдущем разделе была представлена новая концепция связи типа «один-множество», установленной между таблицами Растения и Каталоги. Всего существует три типа связей, подробное описание которых выходит за рамки данной книги, поэтому ограничимся лишь поверхностным знакомством с ними.

  •  Отношение «один-к-одному» - в обеих таблицах связана только одна запись. Связи такого рода встречаются нечасто.



Рис. 6.14. Только что созданная связь показана соединительной линией

  •  Отношение «один-ко-многим» — наиболее популярный тип связей. Каждая запись в таблице первичного ключа может быть соединена со множеством записей во взаимосвязанной таблице. Например, каждый каталог может быть связан с несколькими записями в таблице Растения, однако каждое растение при этом будет связано только с одним каталогом.
  •  Отношение «множество-множество» — в обеих таблицах существует несколько взаимосвязанных записей. К примеру, для описания цвета каждого растения можно добавить таблицу цветов. Каждый цвет будет связан с несколькими растениями, в то время как каждое растение может иметь несколько цветов.


Пока что не стоит задумываться о различиях типов связей, ведь Access проделывает немалую работу для автоматической обработки связей между таблицами.

Изменение связи



Мы уже умеем создавать связь, а теперь попробуем ее изменить. При этом мы воспользуемся принципом целостности данных для обеспечения связи между таблицами Растения и Типы. Под целостностью данных будем подразумевать набор правил, защищающих данные от бессмысленных изменений. Возьмем, к примеру, связь между растениями и типами. Что, если удалить первую строку из таблицы Типы? Мы не сможем просмотреть описание растений с номером типа, равным 1. Именно здесь «придет на помощь» функция целостности связей, которая сейчас будет использоваться с уже существующей связью.

Откройте диалоговое окно Изменение связей, дважды щелкнув на связи между таблицами Растения и Типы. Установите флажок Обеспечение целостности данных и щелкните на кнопке ОК (а не на кнопке Создать, как это делалось нами ранее — см. рис. 6.13).

В результате изменения связи между таблицами Растения и Типы соответствующим образом изменится и внешний вид соединительной линии (рис. 6.15). Как видите, связь между таблицами представляет собой отношение «один-ко-многим» с поддержкой функции целостности связи.



Рис. 6.15. Обновленная соединительная линия между таблицами Растения и Типы


 

В диалоговом окне Изменение связей имеется еще несколько элементов управления (см. рис. 6.13). Рассмотрим их предназначение.

  •  В списке Таблица/запрос — всегда указывается первичный ключ связи. С его помощью можно указать соответствующее поле(я) ключа в ячейках, расположенных ниже списка. Как правило, Access самостоятельно определяет корректные значения.
  •  В списке Связанная таблица/запрос — всегда указывается внешний ключ связи. С его помощью можно определить соответствующее поле(я) в ячейках ниже списка. Как правило, Access также самостоятельно определяет корректные значения.
  •  Кнопка Объединение — щелчок на ней выводит на экран еще одно диалоговое окно, в котором можно изменить тип соединения. Эта операция нами применяться не будет.
  •  Кнопка Новое — позволяет связать несколько ключей полей (более подробная информация о первичных и внешних ключах представлена в главе 4).
  •  Флажок каскадное обновление связанных полей — обеспечивает целостность данных, возможную только при условии установки соответствующего флажка. Позволяет автоматически обновить все значения связанного внешнего ключа при изменении значения главного первичного ключа. Лишь в случае крайней необходимости рекомендуется использовать эту функцию.
  •  Флажок каскадное удаление связанных полей — обеспечивает целостность данных, возможную только при условии установления флажка Обеспечение целостности данных. Позволяет автоматически удалить все записи связанного внешнего ключа при удалении записи первичного ключа. Рекомендуется использовать лишь в случае необходимости.
  •  Поле Тип отношения — определяет тип связи между таблицами.


Закройте окно Схема данных и щелкните на кнопке Да, чтобы подтвердить корректность внесенных изменений.

Обеспечение целостности данных



Ранее в окне Изменение связей (рис. 6.13) был установлен флажок Обеспечение целостности данных. Принцип обеспечения целостности подразумевает необходимость использования набора правил, защищающих данные, поскольку Access запрещает добавление или изменение некоторых записей. Таким образом, обеспечение целостности данных позволяет:

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


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



Рис. 6.16. Функция обеспечения целостности не позволит удалить запись каталога Фермер


Запись для каталога Фермер не удалось удалить по той причине, что два растения — космея и германская ромашка — связаны с каталогом. До тех пор, пока записи о растениях не будут удалены из таблицы Растения, в каталоге Фермер от них избавиться не удастся.

Удаление этой записи, будь оно возможно, привело бы к появлению «одиночки» — связанной записи, значение внешнего ключа которой (в данном случае ключа каталога Фермер) не связано с записью соответствующей таблицы. Другими словами, в случае удаления записи каталога Фермер стало бы невозможно узнать, где были приобретены семена ромашки и космеи. Может быть, это не покажется большой проблемой, но как насчет информации о клиентах, разместивших тот или иной заказ? Ведь сведения такого рода для нас «жизненно необходимы».

Теперь посмотрим, что произойдет при попытке изменить значение первичного ключа. В таблице Каталоги попробуйте изменить название Фермер на Фермерша. При этом символ ввода будет перемещен на соседнюю строку. Изменение записи приведет к появлению предупреждения о невозможности ее удаления, поскольку таблица Растения содержит связанные записи. Щелкните на кнопке ОК, а затем на кнопке < Esc>. Причина появления сообщения та же, что в предыдущем случае: изменение названия каталога привело бы к появлению в таблице Растения «одиночек», а именно растений космея и ромашка.

Если убран флажок Обеспечение целостности данных, Access позволяет обновить любое значение или добавить/удалить любую запись, когда не изменится тип данных и не нарушаются правила проверки достоверности, описанные в главе 11, «Настройка таблиц». По этой причине флажок желательно не снимать. Кроме того, не следует устанавливать флажки каскадного обновления, не имея на то веского основания, и тем более не рекомендуется оставлять их постоянно установленными.


Содержание раздела