- •Министерство образования и науки Российской Федерации
- •В информационных технологиях и информационных системах
- •Часть II
- •1. Особенности проектирования многотабличных баз данных
- •2 Определение связей между таблицами
- •2.1 Объединения
- •2.2 Ограничения и поддержание целостности данных
- •2.2.1 Ограничения в базе данных
- •2.2.2 Поддержание целостности данных
- •2.3 Связывание таблиц
- •2.4 Создание форм для ввода данных
- •3 Многотабличные запросы
- •4 Создание форм на основе нескольких таблиц или многотабличных запросов
- •4.1 Создание подчиненных форм
- •4.2 Вычисление итоговых значений
- •4.3 Добавление в существующую подчиненную форму другой подчиненной формы
- •4.4 Связывание главной и подчиненной форм
- •4.5 Всплывающие формы и окна диалога
- •5 Макросы и модули
- •6 Создание интерфейса
- •Задания для самостоятельной работы
- •Литература
- •Часть II
- •610000, Киров, ул. Ленина, 104
2.3 Связывание таблиц
Для связывания таблиц «Абонент» и «Разговор» используется поле Код абонента, для связывания таблиц «Город» и «Разговор» - поле Код города. Следует обратить особое внимание на то, что поля для связи должны быть одного типа и размера, иначе при работе с базой данных возникнут проблемы. Тип поля Код абонента в таблице «Абонент» – счетчик размером Длинное целое. Поэтому в таблице «Разговор» поле Код абонента должно быть числовым размером Длинное целое. Поле Код города в таблице «Город» - текстовое размером 5 байт, значит в таблице «Разговор» поле Код города должно быть тоже текстовое размером 5 байт. Ни которое из этих полей в таблице «Разговор» не должно быть ключевым.
Рисунок 2.2– Добавление таблиц в схему данных
Рисунок 2.3 – Окно диалога «Изменение связей»
В
базе данных «Межгород» связи между
таблицами определяются в окне диалога
«Схема
данных». Для
этого необходимо выполнить следующие
действия:
открыть окно диалога «Схема данных», выполнив команду Сервис/Схема нных;в открывшееся окно диалога добавить связываемые таблицы «Абонент», «Город» и «Разговор» (рисунок 2.2);
выбрать поле Код абонента в таблице «Абонент» и переместить его с помощью мыши на поле Код абонента таблицы «Разговор»;
на экране откроется окно диалога «Изменение связей» (рисунок 2.3). Здесь необходимо проверить правильность имен связываемых полей и задать условия целостности данных. Тип создаваемой связи зависит от полей, которые были указаны при определении связи. В данном случае создается тип отношения «один-ко-многим», так как только одно из полей является ключевым и имеет уникальный индекс;
для обеспечения целостности данных нужно поставить три флажка (рисунок 2.3):
обеспечение целостности данных;
каскадное обновление связанных полей;
к
аскадное
удаление связанных полей.
Рисунок 2.4 – Окно диалога «Схема данных»
с установленными связями между таблицами
Окно диалога «Схема данных» после установки связей выглядит, как показано на рисунке 2.4.
2.4 Создание форм для ввода данных
После создания структуры таблиц и установления между ними связей в таблицы необходимо занести данные. Занесение данных в таблицы «Абонент» и «Город» не вызывает трудностей, поэтому можно заносить данные в них в режиме таблицы, но для заполнения таблицы «Разговор» нужно создать форму, так как в эту таблицу заносятся не фамилии и название города, а соответствующие им коды. Форму необходимо создавать с помощью мастера на основе таблицы «Разговор».
Для удобства ввода, чтобы иметь возможность на созданной форме выбирать абонентов по фамилии, а города по названиям, поля Код абонента и Код города удаляются, а на их место помещаются поля со списком. Чтобы выполнить такую замену, вновь созданную форму «Разговор» нужно открыть в режиме конструктора.
П
ри
размещении на форме элементов управления
необходимо воспользоваться мастерами,
которые выполнят определенные действия.
Поэтому при создании Поля
со списком,
нужно включить соответствующий режим
на панели элементов (кнопка Мастера
должна быть в активном состоянии).
С
начала
удаляется поле Код
абонента и
вместо него на форму помещается Поле
со списком.
С помощью этого Поля
со списком
будет выбираться фамилия абонента.
Поэтому в первом открывшемся диалоговом
окне надо указать, откуда будут браться
данные для объекта Поле
со списком. Поскольку
фамилии абонентов находятся в таблице,
то соответственно объект Поле
со списком
будет использовать значения из таблицы
(Рисунок 2.5).
В следующем диалоговом окне (рисунок 2.6) выбирается конкретная таблица или запрос (таблица «Абонент»).
В третьем открывшемся окне необходимо задать поля, которые станут столбцами поля со списком – Код абонента и Фамилия (Рисунок 2.7).
Е
ще
одно окно позволяет изменить ширину
столбца, в котором отображается список
(рисунок 2.8).
В последнем из открывающихся диа-логовых окон выби-рается поле, в котором сохраняется инфор-мация об абоненте (рисунок 2.9). Нужно быть особенно внимательным при работе с этим окном. Таблицы «Абонент» и «Разговор» связаны между собой по полю код абонента. Поскольку фамилия абонента выбирается из таблицы «Абонент», а заполняется таблица «Разговор», в которой необходимо занести данные в поле код абонента. Поэтому Код абонента, который соответствует выбранной фамилии в таблице «Абонент», необходимо сохранить в поле код абонента таблицы «Разговор».
Аналогичным
образом заменяется поле Код
города на
поле со
списком,
содержащее названия городов (естественно,
что в этом случае при создании поля со
списком в качестве источника используется
таблица «Город», а Код
города,
соответствующий выбранному названию
города, сохраняется в поле Код
города).
На рисунке 2.10. показаны две формы «Разговор» в режиме Конструктора – до замены полей Код города и Код абонента на поля со списком (а) и после замены полей (б).
И
спользуя
сконструированную форму, можно вводить
данные. Заполненные таблицы показаны
на рисунке 2.11.
