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

В Microsoft Access понятиям Ссылочное (целевое) отношение и Ссылающееся отношение соответствуют понятия Главная таблица и Подтаблица.

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

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

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

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

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

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

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

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