Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектирование_Таблиц.doc
Скачиваний:
10
Добавлен:
06.11.2018
Размер:
889.86 Кб
Скачать

5. Ссылочная целостность

В Microsoft Access при установлении ссылочной целостности применяются понятия Главная таблица и Подтаблица.

Главная таблица – это таблица на стороне “один” при связи двух таблиц с отношением “Один-ко-многим”. В главной таблице должно существовать ключевое поле, а все записи в ней должны быть уникальными. Примером главной таблицы может служить таблица Товар, в которой каждый товар однозначно идентифицируется с помощью ключевого поля Код товара.

Подтаблица – это таблица на стороне “многие” при связи двух таблиц с отношением “Один-ко-многим”. Примером подтаблицы является таблица Продажа (рис.16).

Одна и та же таблица может в одной связи быть главной, а в другой – подтаблицей. Например, таблица Счет является главной в связи с таблицей Спецификация счета и подтаблицей – в связи с таблицей Покупатель.

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

Рассматриваемая схема данных БД sale.mdb позволяет построить экранную форму для ввода данных в таблицы Microsoft Access из первичных документов Счет и Продажа по счетам, обеспечивая при этом ссылочную целостность.

Изменение целостности данных в Microsoft Access производится при помощи диалогового окна “Изменение связей” (рис. 18).

Рис.18. Установка связей между таблицами

Для вывода окна на экран следует дважды щёлкнуть левой кнопкой мыши по линии связи таблиц или щёлкнуть по ней один раз правой кнопкой мыши и выбрать пункт “Изменить связь…”. Для обеспечения целостности данных необходимо установить одноимённый флажок в окне “Изменение связей”. Тогда Microsoft Access обеспечивает выполнение следующих правил.

  1. Невозможно ввести в поле внешнего ключа связанной подтаблицы значение, не содержащееся в ключевом поле главной таблицы. Однако в поле внешнего ключа возможен ввод значений Null.

  2. Не допускается удаление записи из главной таблицы, если существуют связанные с ней записи в подчиненной таблице. Например, невозможно удалить запись из таблицы Товар, если в таблице Продажа имеются товары, имеющие код товара такой же, как удаляемый код товара в таблице Товар. При попытке сделать это Microsoft Access выдаёт сообщение “The record cannot deleted or changed because table "Спецификация счета" includes related records – Запись нельзя удалить или изменить, т.к. таблица

" Спецификация счета " имеет связанные записи”.

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

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

Для того чтобы можно было изменять и/или удалять записи в связанных таблицах, сохраняя при этом целостность данных, в Microsoft Access применяется каскадирование. С этой целью следует установить флажки Каскадное обновление связанных полей и Каскадное удаление связанных полей. Если установлен флажок Каскадное обновление связанных полей, то при изменении ключевого поля главной таблицы автоматически изменяются и соответствующие значения связанных записей. Если установлен флажок Каскадное удаление связанных полей, то при удалении записи в главной таблице удаляются и все связанные записи в подчиненной таблице. Например, если удалить (изменить) номер счета в таблице Счет, то будут удалены (изменены) номера счетов во всех записях таблицы Спецификация счета.