Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МетБДПос(Лобова)!!.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
4 Мб
Скачать
☆

3.7Проверка поддержания целостности в базе данных

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

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

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

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

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

Объединение записей взаимосвязанных таблиц

При создании форм, запросов, отчетов, страниц доступа к данным на основе взаимосвязанных таблиц производится объединение их записей: объединяется каждая запись из одной таблицы с каждой записью из другой таблицы при условии равенства значений в поле связи. Рассмотрим пример объединения записей таблиц товар и поставка_план по полю код_тов. Таблица поставка_план содержит план отгрузки товаров, заданный в спецификациях договоров. Каждая запись этой таблицы представляет один из товаров, который должен быть отгружен в указанные сроки покупателю. Рассматриваемые таблицы находятся в отношении один-ко-многим. Поле код_тов является уникальным ключом в таблице товар. В таблице поставка_план значения этого поля повторяются во многих записях. На рисунке 5.8 показан пример заполнения таблиц. При объединении (по умолчанию) записей по полю код_тов вследствие того, что таблицы находятся в отношении один-ко-многим, формируется таблица, в которой каждая строка подчиненной таблицы поставка_план объединяется с одной из строк таблицы товар.

Рисунок 5.7. Содержимое объединяемых таблиц товар и план_поставки

Если для некоторой записи, например, записи с кодом товара Т008 в таблице товар отсутствуют связанные записи в другой таблице — объединять запись не с чем — и в результат такая запись не включается. Именно по этой причине в результате объединения таблиц товар и поставка_план отсутствуют записи о товарах, не представленных в плане поставки, а также записи о плановых поставках, в которых указан товар, отсутствующий в таблице товар.

Для каждой связи двух таблиц могут быть указаны и другие способы объединения записей по ключу связи. Всего их три:

  1. Объединение только тех записей, в которых связанные поля обеих таблиц совпадают (INNER JOIN).

  2. Объединение тех записей, в которых связанные поля обеих таблиц совпадают, а также объединение всех записей из первой таблицы, для которых нет связанных во второй, с пустой записью второй таблицы (LEFT JOIN).

  3. Объединение тех записей, в которых связанные поля обеих таблиц совпадают, а также объединение всех записей из второй таблицы, для которых нет связанных в первой, с пустой записью первой таблицы (RIGHT JOIN).

Любой из перечисленных способов объединения может быть выбран для связи вне зависимости от того, находятся связываемые таблицы в отношениях 1:1, 1:М или тип отношения не может быть определен системой.

Существует три способа объединения данных. В окне Изменение связей есть кнопка Объединение. При нажатии этой кнопки появится окно Параметры объединения в нем может быть выбран способ объединения. По умолчанию определяется первый. (Рисунок 5.8.)

Рисунок 5.8. Окно выбора способа объединения связываемых таблиц

Отображение записей подчиненных таблиц в главной таблице

В Access имеется возможность при просмотре главной таблицы отображать записи подчиненных таблиц. Это позволяет пользователю при добавлении, удалении и редактировании записей осуществлять контроль за корректностью связей. Например, если отобразить в таблице договор подчиненную таблицу поставка_план, связанных по полю ном_дог, то при заполнении таблицы поставка_план невозможно допустить ошибку в поле ном_дог, т. к. оно даже не отображается в подчиненной таблице (Рисунок 5.10).

Достаточно щелкнуть на знаке "+" в строке записи, чтобы отобразились записи подчиненной таблицы, связанные с текущей записью. При этом "+" преобразуется в (минус). Щелчком на "–" подчиненные записи закрываются.

Открыть или закрыть все подчиненные записи можно, воспользовавшись командой меню ФорматПодтаблицаРазвернуть все или Свернуть все.

В таблице базы данных Access одновременно можно просматривать данные подтаблиц восьми уровней.

Рисунок 5.9.. Отображение подчиненных подтаблицы в главной таблице

Для определения подтаблицы выполните команду Подтаблица. Отобразится окно Вставка подтаблицы (Рисунок 4.11.), в котором следует выбрать подчиненную таблицу или запрос и указать поля связи. После сохранения таблицы имя подтаблицы и имена подчиненного и основного полей записываются в свойства главной таблицы.

Рисунок 5.10. Окно для выбора подчиненной таблицы и поля связи с ней