5. Организация и
отображение связей между таблицами
5.1. Общие правила
установки связей между таблицами
Связи между таблицами устанавливаются двумя способами:
- создание непосредственных связей между таблицами;
- создание вложенных таблиц данных.
Для создания связей необходимо установить соответствие величин одной таблицы величинам из другой таблицы. Обычно связывают ключевое поле родительской таблицы (внешний ключ) с соответствующим ему полем дочерней таблицы. Эти поля часто имеют одинаковые имена, но в общем случае это не обязательно. Строго обязательными являются следующие условия:
§ Поле Счетчик разрешается связывать с числовым полем, если в числовом поле в свойстве Размер поля задано значение Длинное целое;
§ Поле Счетчик разрешается связывать с числовым полем. Если для обоих полей в свойстве Размер поля задано значение Код репликации.
Рекомендации разработчику базы данных:
1. Не стремитесь при создании таблиц полностью их заполнять данными, сначала создайте поля и разберитесь, какие из них будут использоваться в других таблицах, какие поля должны иметь Маску ввода, какие поля должны контролироваться при вводе.
2. При создании таблиц не следует сразу устанавливать первичные ключи или индексы, т.к. в ходе проектирования могут поменяться условия.
3. Контролируйте типы полей, используя режим Конструктора, не зависимо каким способом создавалась таблица.
5.2. Установление ключей в
таблицах
Всякая таблица обычно содержит один или несколько столбцов, значения которых уникально идентифицируют каждую строку таблицы. Этот столбец называют первичным ключом таблицы. Назначением первичного ключа является обеспечение ссылочной целостности данных в нескольких таблицах. Следует напомнить, что для того, чтобы дочерняя таблица связывалась с родительской таблицей через внешний ключ.
На рис. 5.1 показано окно с описанием таблицы Сотрудники в режиме конструктор после установления ключевого поля.
Рис. 5.1
ПРИМЕЧАНИЕ. Этот пункт введен специально, чтобы разобрать типичную ошибку при проектировании баз данных. В ЧЕМ ОШИБКА? КАК ЕЕ ИСПРАВИТЬ? - об этом будет сказано ниже. На рис. 5.2 представлены поля для таблицы Штатные должности с неправильно выбранным ключевым полем.
Рис. 5.2
5.3. Создание
непосредственных связей
Создание непосредственных связей между таблицами рассмотрим на примере базы данных Сотрудники фирмы.
1. Перейти к диалоговому окну Схема данных. Для этого следует выделить одну из таблиц в окне базы данных, а затем в строке меню воспользоваться закладкой Сервис и запустить команду Схема данных, как это показано на рис. 5.3. или можно использовать пиктограмму (Схема данных).
Рис. 5.3
2. Если связей между таблицами не было установлено, то откроется пустое окно «Схема данных», в противном случае в окне отобразится одна или несколько таблиц. Для отображения таблиц в окне, необходимо в строке меню выбрать закладку Связи и запустить команду - Отобразить таблицу или воспользоваться пиктограммой (Отобразить связи), откроется окно «Добавление таблицы», которое показано на рис. 5.4.
Рис. 5.4
3. На вкладке «Таблицы» (рис. 5.4) перечислены все, ранее созданные, таблицы, которые следует перенести на поле «Схема данных», представленное на рис. 5.5.
Рис. 5.5
4. Провести анализ правильности назначения ключевых полей для таблиц. В рассматриваемом примере, в окне «Схема данных» жирным шрифтом выделены ключевые поля, которые уже назначены в таблицах. Как видим на рис. 5.5 для таблицы Штатные должности ключевым полем является – «Классификатор должностей». Попробуем соединить это поле с полем «Должность» в таблице Сотрудники. Для этого мышкой необходимо ухватить одно из полей и соединить с другим. После того, как будет отпущена левая клавиша мыши, появится окно «Изменение связей», представленное на рис. 5.6, в этом окне всегда требуется поставить отметку - «Обеспечение целостности данных». Если типы данных совпадают (выполняются правила для ключа, см. раздел 5.1), то связь один-ко-многим будет создана, в противном случае система укажет на ошибку и появится окно, которое представлено на рис. 5.7. В рассматриваемом примере появится сообщение (рис. 5.7). Причина заключается в том, что не выполнено правило по совпадению типов полей, следовательно, необходимо вновь открыть таблицу Штатные должности в режиме Конструктор, и заменить ключевое поле.
Рис. 5.6
Рис. 5.7
5. Проведем коррекцию расстановки ключей в таблицах Штатные должности и Выслуга лет. Для этого следует открыть таблицу Штатные должности в Конструкторе, снять ключ с поля «Классификатор должностей», назначить ключ для поля – «Должность» и сохранить таблицу. Для таблицы Выслуга лет достаточно выбрать уже имеющееся поле «Стаж работы» в качестве ключевого поля (это уникальное поле – без повторений). Сохранить таблицу.
6. Вновь обратиться к окну «Схема данных», ухватить левой клавишей мыши ключевое поле «стаж работы» в таблице Выслуга лет и соединить с полем «Стаж работы» в таблице Сотрудники. Окончательный вариант установления связей между таблицами, показан на рис. 5.8.
Рис. 5.8
5.4. Создание вложенных
таблиц
Вложенные таблицы иллюстрируют иерархичность структуры баз данных. При установлении связей между таблицами главная таблица автоматически получает доступ к дочерним таблицам, что отображается при просмотре в режиме таблиц. Например, если установить связи между главной таблицей Стаж работы и подчиненной таблицей Сотрудники, то после открытия таблицы Стаж работы в ней появится новый столбец со знаками + (плюс) против каждой записи. Это свидетельствует, что подчиненные таблицы созданы, пример показан на рис. 5.9, где раскрыты строки с подчиненными записями, относящиеся к инженерам и старшим инженерам.
Рис. 5.9
Создание вложенных таблиц позволяет автоматически устанавливать связи. Рассмотрим этот пример. Предположим мы создали простую таблицу под названием Должности на фирме, в которой указаны все должности, существующие на фирме, показанные в окне на рис. 5.10.
Рис. 5.10
Порядок создания вложенных таблиц заключается в следующем:
1. Открыть таблицу (в нашем примере – Должности на фирме) в режиме просмотра таблицы.
2. В строке меню базы данных выбрать закладку вставка и выполнить команду «Подтаблица».
3. В открывшемся окне «Вставка подтаблицы» выбрать имя подтаблицы, например, Сотрудники. В раскрывающемся списке «Подчиненные поля» выбрать имя поля «Должность», а в окне «Основные поля» выбрать – «Должность на фирме», как это показано на рис. 5.11.
Рис. 5.11
4. Нажать на кнопку ОК. Система выведет транспарант, который представлен на рис. 5.12, конечно следует ответить «Да», после чего будут созданы вложенные таблицы в таблицу Должность на фирме.
Рис. 5.12
5. Открыть таблицу Должность на фирме и просмотреть иерархию вложенных таблиц. В рассматриваемом примере в таблице Сотрудники нет записей с должностью Повар, поэтому раскрытая подтаблица не имеет ни одной записи, а вот подтаблица, относящаяся к должности Инженер, имеет две записи, что соответствует существующему состоянию дел. Пример раскрытия встроенных подтаблиц показан на рис. 5.13 и 5.14.
6. Добавить в окно «Схема данных» новую таблицу Должности на фирме и установить связи. В итоге получится база данных, которая состоит из четырех таблиц. Три таблицы являются главными (родительскими), а связаны они между собой через подчиненную таблицу Сотрудники, как это показано на рис. 5.15.
Рис. 5.13
Рис. 5.14
Рис. 5.15
Вопросы для самоконтроля
1. Какие существуют способы установления связей между таблицами?
2. Для чего в таблицах устанавливают ключевое поле?
3. Какие типы данных можно хранить в ключевом поле?
4. Какое существует основное правило для решения вопроса о связывании полей разных таблиц?
5. На какие свойства поля необходимо обращать особое внимание, при назначении этого поля в таблицы ключевым?
6. В чем заключается последовательность установки связей между таблицами в окне «Схема данных»?
7. Как осуществлять операцию изменения связей?
Задания для самостоятельной работы
· Откройте окно «Схема данных», добавьте таблицу «Распределение льгот», и установите связь с таблицей «Сотрудники».
· Добавьте таблицу «Льготы на фирме» в окно «Схема данных» и выберите таблицу, с которой можно осуществить связь.