Просмотр содержимого документа
«Презентация на тему "Создание приложения со связанными таблицами"»
"Создание приложения со связанными таблицами"
Тема урока: Создание приложения со связанными таблицами.
В общем случае приложение может иметь доступ к нескольким связанным таблицам. Как отмечалось, связь между таблицами устанавливается через поля связи, которые обязательно должны быть индексированными. При задании связи между двумя таблицами имеет место отношение подчиненности: одна таблица является главной, а вторая — подчиненной. Обычно используется связь "один-ко-многим", когда одной записи в главной таблице может соответствовать несколько записей в подчиненной таблице. Такая связь также называется "мастер-детальный" (Master-Detail). После установления связи между таблицами при перемещении в главной таблице текущего указателя на какую-либо запись в подчиненной таблице автоматически становятся доступными записи, у которых значение поля связи равно значению поля связи текущей записи главной таблицы.
Рис. 3. Вид приложения с несколькими таблицами при выполнении
В частности, при выборе в главной таблице (рис. 3) записи со значением вед. нс поля Post в подчиненной таблице автоматически отображается строка с тем же значением в поле связи P_Post.
В рассмотренном нами примере использовалась связь типа "многие-кодному". Чаще применяется связь типа "один-ко-многим". Однако в этом случае описанным способом можно установить связь только между двумя таблицами (одной главной таблицей и одной подчиненной таблицей), в то время как при данном типе связи требуется наличие нескольких главных и одной подчиненной таблиц.
Для организации связи между таблицами в подчиненной таблице (компонент Table в случае механизма BDE или его аналоги для других механизмов доступа) используются следующие свойства, указывающие:
- MasterSource — источник данных главной таблицы;
- IndexName — текущий индекс подчиненной таблицы;
- IndexFieldNames — поле или поля связи текущего индекса подчиненной таблицы;
- MasterFields — поле или поля связи индекса главной таблицы.
Во время работы со связанными таблицами нужно учитывать некоторые особенности.
- При изменении (редактировании) связанного поля может нарушиться связь между записями двух таблиц. Поэтому при редактировании связанного поля записи главной таблицы нужно соответственно изменять и значения поля связи всех подчиненных записей.
- При удалении записи главной таблицы нужно удалять и соответствующие ей записи в подчиненной таблице (каскадное удаление).
- При добавлении записи в подчиненную таблицу значение поля связи формируется автоматически по значению поля связи главной таблицы.
Ограничения ссылочной целостности (по изменению полей связи и каскадному удалению записей) могут быть наложены на таблицы при их создании, например в среде программы Database Desktop, или устанавливаться программно.
Рассмотрим следующий пример. Предположим, что требуется установить связь между тремя таблицами. Две из них являются подчиненными (таблицы PSalary — оклад по должности и DSarary — надбавка за степень) и одна — главной (SEmployee — данные о сотрудниках) (рис. 1).
Рис. 1. Связи между таблицами
Для каждой из трех таблиц в приложении зададим по два компонента Table и DataSource. А именно Table1 и DataSource1 — для таблицы данных о сотрудниках, Table2 и DataSource2 — для таблицы окладов, Table3 и DataSource3 — для таблицы надбавок.
Для компонентов Table1—Table3 в качестве значения свойства DatabaseName установим DBDEMOS, а свойству TableName зададим значения SEmployee, PSalary и DSarary соответственно.
Для компонентов DataSource1—DataSource3 свойству DataSet выберем значения Table1—Table3 соответственно.
Post. При этом оба поля пропадают из своих списков. Заполнение свойств IndexName и MasterFields происходит после закрытия окна при нажатии кнопки ОK. " width="640"
Для каждого из компонентов подчиненных таблиц (Table2 и Table3) свойству MasterSource путем выбора из списка зададим одинаковое значение DataSource1. Затем щелчком мыши в строке свойства MasterFields откроем диалоговое окно Field Link Designer (Конструктор полей связи) (рис. 2). Здесь в раскрывающемся списке Available Indexes (Доступные индексы) выбирается индекс подчиненной таблицы, после чего составляющие его поля отображаются в списке Detail Fields (Детальные поля). В этом списке необходимо выбрать поле подчиненной таблицы, а в списке Master Fields (Главное поле) — поле главной таблицы (рис. 2). После нажатия кнопки Add выбранные поля связываются между собой, что отображается в списке Joined Fields (Связанные поля), например, так: P_Post - Post. При этом оба поля пропадают из своих списков. Заполнение свойств IndexName и MasterFields происходит после закрытия окна при нажатии кнопки ОK.
Диалоговое окно Конструктора полей связи
Установление связей между главной и подчиненными таблицами приводит к тому, что при выполнении приложения выбор некоторой записи в главной таблице будет приводить к выбору соответствующих записей в каждой из подчиненных таблиц (рис. 3).