Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Связь между таблицами и целостность данныхлекци...doc
Скачиваний:
9
Добавлен:
18.11.2019
Размер:
1.13 Mб
Скачать

Связь между таблицами и целостность данных

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

Связи между таблицами основаны на поле одинаковом для обеих таблиц – общем поле. Между одноименными полями двух таблиц Access автоматически устанавливает связь. Access позволяет вручную устанавливать связь по разноименным полям.

Типы связи в Access

Один – к - одному (1:1) – каждая связь из первой таблицы связана с единственной записью из второй таблицы и наоборот. Однако это не самый популярный вид связи.

Иногда по соображениям безопасности применяют связь один – к - одному, чтобы разнести информацию по двум таблицам. Например, поля с конфиденциальными сведениями о клиентах (кредитный лимит, процент скидки). Сохраняют в отдельной таблице. Это позволяет с помощью пароля защитить таблицу с конфиденциальными сведениями от несанкционированного доступа. Эту связь используют также для разделения крупных таблиц.

Один – ко - многим (1:∞)– каждая запись главной таблицы связана с одной или несколькими записями из связанной таблицы, но каждая запись из связанной таблицы связана с единственной записью из главной таблицы. Это наиболее популярный вид связи. Например, часто связь один – ко - многим существует между таблицей Клиенты и таблицей Заказы, поскольку каждый клиент может сделать несколько заказов, однако каждый заказ принадлежит только одному клиенту.

Многие – ко – многим (∞:∞) – каждая запись из первой таблицы связана с несколькими записями из второй, а каждая запись из второй таблицы связана с несколькими записями из первой. Чтобы создать между таблицами такое соотношение приходиться создавать связующую таблицу и устанавливать связи один – ко - многим между третьей таблицей и двумя первыми. Ключевое поле третьей таблицы состоит из ключевых полей А и В. Как правило, большая часть информации связанной подобным образом, должна находиться в одной таблице.

Товары

Код товара тттттттовар

Заказы

Код заказа

А

Заказано

Код заказа

Код товара

В

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

Связи между таблицами MS Access создают и модифицируют в диалоговом окне Сервис/ Схема данных. Если в БД отсутствуют связи, при первом открытии Схемы данных появляется окно Добавить, далее Закрыть. Связываем поля одной таблицы с полем другой, после этого всплывает ДО – Связи. Мы в окне диалога установили флажок Обеспечение целостности данных.

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

Контроль целостности данных может быть установлен, если

  1. Главная таблица связывается с подчиненной по первичному простому (или составному) ключу главной таблицы.

  2. Связанные поля содержат данные одного и того же типа, (имена полей могут быть различными).

  3. Все таблицы находятся в одной базе данных.

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

    1. добавлять запись в связанную таблицу можно лишь при наличии соответствующей записи в главной таблице

    2. Access не позволяет удалить запись из главной таблицы, если существуют соответствующие записи в связанной таблице

    3. Access не позволяет изменить значение основного ключа в главной таблице, если существуют соответствующие записи в связанной таблице.

Если Вы согласны, чтобы Access соблюдала эти правила, то при создании связи щелкните флажок Обеспечение целостности данных. При включенном режиме целостности данных на экране появится предупреждение в случае возможного нарушения одного из перечисленных выше правил.

Включив механизм поддержки целостности данных, можно (но необязательно) потребовать, чтобы при модификации данных система запускала следующие процессы:

  • каскадное обновление связанных полей

  • каскадное удаление связанных записей.

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

Каскадное удаление означает, что при удалении записи из главной таблицы (например, записи с кодом клиента 20) , из подчиненной таблицы будут удалены все записи, у которых значение связанного поля совпадает с удаляемым (например, клиент с кодом 20).

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