Нормализация таблиц имеет не только некоторые упоминавшиеся уже выше преимущества, но и некоторые накладки для удобства пользователя. Действительно, даже при относительно небольшом объёме таблиц становится уже крайне сложно запомнить, какой ссылающийся на другую таблицу код какому конкретному значению в ней соответствует. Поэтому чтобы, с одной стороны, не снижать эффективность и надёжность работы самой БД, что невозможно без нормализации её таблиц, а с другой - обеспечить удобство пользователю, в СУБД ACCESS предусмотрена возможность при отображении таблицы замены (подстановки) вместо кода, ссылающегося на строку в другой таблице, самих значений интересующих пользователя полей из этой строки. Сами таблицы при этом не меняются, изменяется только вид их отображения на экране.
Например, в нашей БД «Торжок» таблица Заказы ссылается как на коды покупателей, так и на коды продавцов. При работе это может быть не всегда удобно.
Упражнение. Связь таблиц
В предыдущем упражнении с помощью мастера подстановок была настроена связь между двумя таблицами. Это удобно. Но представьте, что мы удалили строку одной из таблиц, на которую имеется ссылка в таблице «Заказы». В таком случае останутся ссылки на людей, полные координаты которых будут потеряны. Наличие правильно организованной связи, при которой сама система будет отслеживать и предупреждать о подобных ситуациях, позволяет избежать подобных накладок. Посмотрите, как можно связать таблицы более надёжным способом:
1. Выберите команду «Сервис/Схема данных». Откроется окно, изображающее схему связей таблиц БД.
Поскольку в учебной БД уже установлены соответствующие связи, для тренировки давайте удалим одну из них, а затем восстановим её.
2. Для этого щелчком по линии связи выделите одну из них, например от поля «кодПокупателя» к таблице «Заказы».
3. Нажмите клавишу «Delete» и подтвердите удаление связи. Она исчезнет.
4. Восстанавливаем связь: Поместите курсор мышки на пункт «кодПокупателя» в таблице «Покупатели»;
5. Нажмите кнопку мыши и перетащите указатель на соответствующее поле таблицы «Заказы».
6. В открывшемся окне диалога кликните кнопку «Создать». Связь появится вновь.
7. Дважды кликните на линии связи. Откроется окно диалога для установки параметров связи.
8. Установите флажок «Обеспечение целостности связи». Этот режим не позволит Access оставлять в таблице «Заказы» записи, для которых нельзя подобрать запись из таблицы «Покупатели».
9. Установите флажок «Каскадное удаление связанных записей». Теперь при удалении записи из таблицы «Покупатели» будут удалены и все записи из других таблиц, которые ссылались на данную персону.
10. Подтвердите изменения и закройте окно «Схема данных».