Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
с 31-34.docx
Скачиваний:
4
Добавлен:
01.04.2025
Размер:
285 Кб
Скачать
☆

Зачем создавать связи между таблицами?

Связи между таблицами можно создать непосредственно с помощью окна "Схема данных" или путем перетаскивания поля из области Список полей. В приложении Access связи между таблицами позволяют соединять таблицы для их использования в объекте базы данных. По ряду причин связи между таблицами следует создавать до создания других объектов базы данных (форм, запросов и отчетов).

  • Связи между таблицами предоставляют сведения для структурирования запросов

Для работы с записями из нескольких таблиц часто приходится создавать запросы, соединяющие таблицы. Запрос сопоставляет значения в поле первичного ключа первой таблицы с полем внешнего ключа второй таблицы. Например, чтобы получить строки, в которых перечисляются все заказы для каждого из клиентов, можно создать запрос, соединяющий таблицу "Клиенты" с таблицей "Заказы" на основе поля "Код клиента". В окне "Схема данных" можно вручную указать поля для соединения. Но если связь между таблицами уже существует, Access использует соединение по умолчанию на основе существующей связи между таблицами. Кроме того, при использовании одного из мастеров запросов Access использует сведения об уже определенных связях между таблицами, чтобы предоставить пользователю выбор и подставить в параметры свойств соответствующие значения по умолчанию.

  • Связи между таблицами предоставляют сведения для структурирования форм и отчетов

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

  • Связи между таблицами — это та основа, с помощью которой можно обеспечить целостность данных, чтобы в базе данных не было потерянных записей. Потерянная запись — это запись со ссылкой на несуществующую запись (например, запись заказа со ссылкой на отсутствующую запись клиента).

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

К началу страницы

Понятие о целостности данных

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

Предположим, между таблицами "Грузоотправители" и "Заказы" существует связь "один-ко-многим", и нужно удалить грузоотправителя. Если у грузоотправителя, которого нужно удалить, есть заказы в таблице "Заказы, они станут потерянными записями после удаления записи грузоотправителя. В таблице "Заказы" останется код грузоотправителя, но он будет недействителен, поскольку запись, на которую он ссылается, уже не существует.

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

Целостности данных можно добиться, если включить ее при создании связи между таблицами (см. пошаговые инструкции в разделе Обеспечение целостности данных). В результате приложение Access запрещает для этой связи все действия, которые могут нарушить целостность данных. Это значит, что Access будет запрещать обновления, изменяющие целевой объект ссылки, и операции удаления, которые его удаляют. Однако может возникнуть ситуация, когда потребуется изменить первичный ключ для грузоотправителя, имеющего заказы в таблице "Заказы". В таких случаях нужно, чтобы приложение Access автоматически обновило все задействованные строки в рамках одной операции. Так Access гарантирует, что обновление полностью завершено и база данных не осталась в несогласованном состоянии (одни строки обновлены, а другие — нет). Для этого в Access предусмотрен параметр "Каскадное обновление связанных полей". Если при включении целостности данных был выбран этот параметр, то при последующем обновлении первичного ключа будут автоматически обновлены все связанные с ним поля.

Может потребоваться удалить строку и все связанные записи — например, запись грузоотправителя и все связанные с ним заказы. Для этого в приложении Access предусмотрен параметр "Каскадное удаление связанных записей". Если при включении целостности данных выбрать его, а затем удалить запись на стороне первичного ключа в связи, Access автоматически удалит все записи со ссылкой на первичный ключ.

К началу страницы