• в одной или в обеих таблицах должно быть поле, принимающее уникальные (не имеющие дублей) значения во всех записях;
• связываемые поля должны иметь одинаковые типы данных. Однако из этого правила есть два исключения:
– поле счетчика разрешается связывать с числовым полем, если в последнем задано значение Длинное целое;
– поле счетчика разрешается связывать с числовым полем, если для обоих полей в свойстве Размер поля задано значение Код репликации;
• связываемые поля числового типа должны иметь одинаковые значения свойства Размер поля.
Для начала свяжите поле Код в таблице Страны с полем Код страны в таблице Фирмы. Для этого щелкните левой кнопкой мыши по одному из связываемых полей и, не отпуская ее, перетащите мышь на другое поле. На экране появится диалоговое окно Изменение связей (рис. 3.30).
В левой части этого окна указано связываемое поле родительской таблицы, а в правой – связываемое поле дочерней таблицы. Если надо изменить одно из этих полей, можно щелкнуть в нем по стрелке прокрутки, а затем выбрать желаемое значение. Установив флажок Обеспечение целостности данных, вы зададите условие: ни в одной из связанных таблиц не будет записей, у которых нет соответствующих «партнеров» в другой таблице. Еще два флажка определяют режимы обновления и удаления полей:
• каскадное обновление связанных полей – устанавливает, что значения поля Код страны в таблице Фирмы изменяются в соответствии со значениями поля Код страны в таблице Страны. Этот флажок имеет смысл установить;
• каскадное удаление связанных записей – устанавливает, что если из первой таблицы будут удалены названия каких-либо стран, то удалятся и соответствующие фирмы во второй таблице. В рассматриваемой ситуации этот флажок вряд ли следует устанавливать, поскольку, во-первых, фирма может иметь дочернее отделение с тем же именем в другой стране; во-вторых, если приборы, выпускаемые этой фирмой, в базе данных остаются, то они в случае каскадного удаления могут оказаться «беспризорными».
Заслуживает внимания клавиша Ообъединение. Щелкнув по ней, вы откроете список возможных критериев для отбора тех записей, которые будут связываться. Вот имеющиеся варианты:
• связь распространяется только на те записи, в которых значения обеих таблиц совпадают;
• связь распространяется на все записи из таблицы Страны и только на те поля таблицы Фирмы, в которых значения, содержащиеся в объединяемых полях, совпадают;
• связь распространяется на все записи из таблицы Фирмы и только на те поля таблицы Страны, в которых значения объединяемых полей совпадают.
Для нашего примера выберем первый, самый простой вариант. Стоит отметить, что обычно подобные решения зависят от конкретной ситуации.
Итак, в поле Тип отношения следует указать, какого типа отношения устанавливаются между таблицами. В данном случае это отношение один-ко-многим.
Теперь щелкните по кнопке Создать. В окне Схема данных появится линия связи между таблицами Страны и Фирмы – рис. 3.31.
Проделав такую процедуру для всех таблиц базы данных, вы получите необходимую систему связей, которая была в качестве примера показана на рис. 2.1.
Мастер печати связей
Чтобы напечатать схему связей, необходимо:
1. Открыть соответствующую базу данных.
2. Открыть подменю Сервис в строке меню этой базы данных. Выбрать пункт Схема данных, чтобы открыть одноименное диалоговое окно.
3. Открыть меню Файл, а в нем активизировать опцию Печать схемы данных.
Подтаблицы
В Access 2002 возможен и другой вариант введения и отображения связей между таблицами, имеющийся начиная с версии Access 2000, – использование подтаблиц. Иерархичность структуры баз данных в этом случае проявляется особенно наглядно.
Подтаблицу можно добавить в любую таблицу, запрос или форму. Форма в режиме формы или таблицы также может иметь подтаблицу. В подтаблицы могут включаться связанные или объединенные данные, находящиеся и в таблицах, и в формах, и в запросах, поэтому вложенными бывают также и формы, и запросы. В этом разделе мы расскажем именно о подтаблицах, создаваемых в режиме таблиц, а об использовании этого механизма для форм и запросов поговорим в соответствующих разделах.