Разработка многотабличной пользовательской формы вывода данных

ЛАБОРАТОРНАЯ РАБОТА № 8.1

Установление связей в многотабличной базе данных.

Представление данных в виде составной формы

Цель работы:приобретение навыков определения различных видов связей между таблицами. Отработать приемы и возможности ввода информации в таблицы с использованием составной формы.

ТЕОРЕТИЧЕСКОЕ ВВЕДЕНИЕ

Установление связей между таблицами

Для сформированных таблиц с установленным ключевым полем в каждой из них возможно создание определенных взаимоотношений. VFP использует эти взаимоотношения для связывания данных в каждом новом запросе, форме или отчете, включающем связанные таблицы. В VFP возможно создание двух типов связей:

- отношение один к одному(1 : 1);

- отношение один ко многим(1 : М).

Создать связь между таблицами можно, если в них есть совпадающие поля.Ключевое поле первой таблицы должно соответствовать аналогичному полю связанной таблицы. Если связанная таблица не содержит такого поля, то его необходимо добавить.

Для установления отношения многие ко многим (М : М) необходимо создать связующую таблицу, содержащую ключевые поля обеих связываемых таблиц.

В Visual FoxPro можно связывать таблицы — устанавливать связи между ними. При этом возможно установление постоянных и временных связей между таблицами. Постоянные связи можно установить в Конструкторе БД, и они прежде всего необходимы для поддержания целостности БД при обновлении содержимого таблиц. Временные связи между таблицами могут устанавливаться при создании экранных форм (для ввода и редактирования данных) и отчетов. Обычно это делается в случаях, когда имеющиеся постоянные связи по каким-либо причинам не подходят для создаваемой формы или отчета.

Постоянные связи хранятся в словаре БД и автоматически устанавливаются при открытии таблиц. Приведем условия установления постоянных связей.

1. Одна из связываемых таблиц является родительской, другая — дочерней.

2. Для родительской таблицы индекс должен быть определен как первичный ключ (Primary) или ключ кандидат (Candidate).

3. Для дочерней таблицы индекс может быть не уникальным. По этому индексу дочерняя таблица будет связываться с родительской (внешний ключ).

Создадим постоянные связи между таблицами. Для этого войдем в Конструктор БД и убедимся в наличии (или создадим) перечисленные ниже индексы (табл. 8.1).

Таблица 8.1

Типы индексов БД Bdu

Таблица Имя тега Тип индекса Индексное выражение
T_ZAGR i_zagr Primary Fio+Predm+STR(Gruppa)
T_PREP i_Fio Primary Fio
T_PREP i_dolgn Candidate Dolgn
T_PREP i_stag Candidate Stag
T_STAG i_stag Primary Stag
T_DOLGN i_dolgn Primary dolgn

После создания всех необходимых индексов в окне Конструктора БД будут представлены все таблицы в виде списка из полей и индексов, разделенных ключевым словом Indexes (индексы).Если в таблице список полей и индексов виден не полностью, его можно прокрутить вниз или вверх. На рис. 8.1 показаны установленные межтабличные связи.

Разработка многотабличной пользовательской формы вывода данных - student2.ru

Рис. 8.1. Межтабличные связи БД Bdu.

Для установления постоянной связи между родительской и дочерней таблицей необходимо:

• установить указатель мыши на первичный ключ родительской таблицы;

• нажав левую кнопку мыши, переместить указатель на индекс дочерней таблицы, по которому устанавливается связь;

• отпустить кнопку.

На экране появится диалоговое окно Edit Relationship (правка связей), содержащее имена связываемых таблиц с раскрывающимися списками индексов. В списках уже выбраны индексы, по которым должна осуществляться связь. Здесь же указывается тип связи между таблицами «один к одному» или «один ко многим». Для сохранения связи нажмем ОК, а при отказе — Cancel (отмена).

Для удаления межтабличной связи требуется выполнить следующее:

• навести указатель мыши на линию связи таблиц;

• нажать правую кнопку мыши, что приведет к утолщению линии и появлению всплывающего меню;

• выполнить команду Remove Relationship (удалить связь) всплывающего меню.

В результате выделенная связь будет удалена. Напомним, что установленные постоянные связи между таблицами используются прежде всего для обеспечения ссылочной целостности (непротиворечивости) БД при обновлении ее содержимого. Для снижения возможных потерь данных рекомендуется сначала устанавливать правила ссылочной целостности, а затем вводить данные в таблицы.

Разработка многотабличной пользовательской формы вывода данных

Главным преимуществом в работе с базами данных можно назвать удобство представления и эффективность организации данных.

VFP позволяет сконструировать форму наиболее удобным для пользователя способом, включив в нее записи различных связанных таблиц.

Для отображения информации сразу из двух таблиц или из таблицы и запроса создается составная форма, которая состоит из основной и находящейся внутри нее подчиняющейся формы. Это позволяет объединять информацию, не переключаясь на другие таблицы или формы. Как правило, подчиненная форма связана с основной.

Сохраняется подчиненная форма в базе данных как отдельная форма.

Основным способом создания формы является использование Мастера составной формы. Мастер может создать и связать обе формы в случае, если основная форма базируется на таблице, а подчиненная форма базируется на связанной с ней другой таблице или создана на базе таблицы и запроса, содержащего поле с тем же именем и типом дан­ных, что и ключевое поле таблицы основной формы.

ПРАКТИКУМ

Задание1. Установить связь между созданными таблицами СВЕДЕНИЯ О ПОСТАВЩИКАХи ПОСТАВЩИКИбазы данных Postavki.dbc.

Рекомендации по выпонению:

Открыть ранее созданную базу данных Postavki.dbc.Во вкладке Таблица диалогового окна База данных: Postavkiпоявляется список таблиц: ПОСТАВЩИКИ, СВЕДЕНИЯ О ПОСТАВЩИКАХ, ЗАКАЗЧИКИ, ТОВАРЫ.

Установить связь между таблицами ПОСТАВЩИКИ и СВЕДЕНИЯ О ПОСТАВЩИКАХ:

- протащить указатель мыши от поля Код поставщика таблицы ПОСТАВЩИКИк полю Код поставщика таблицы СВЕДЕНИЯ О ПОСТАВЩИКАХ;

- в появившемся диалоговом окне Связи установить флажок Обеспечение целостности данных;

- выбрать отношение один к одному;

- нажать кнопку Создать.

Установить связь между таблицами ПОСТАВЩИКИ и ЗАКАЗЧИКИ. Для этого:

- протащить указатель мыши от поля Код поставщика таблицы ПОСТАВЩИКИ к полю Код поставщика таблицы ЗАКАЗЧИКИ;

- в появившемся диалоговом окне Связи установить флажок Обеспечение целостности данных, выбрать отношение один к одному, и нажать кнопку ОК.

Сохранить установленные между таблицами связи и выйти из режима Конструктор баз данных:

- выбрать команду Сохранить макет, пункта меню Файл;

- выбрать команду Закрыть пункта меню Файл. На экране остается открытое окно базы данных. Закрыть базы данных.

Задание 2.Построить составную форму для таблиц ПОСТАВЩИКИи ТОВАРЫбазы данных Postavki.dbc.

Рекомендации по выполнению:

Открыть ранее созданную базу данных Postavki.dbc.Активизировать вкладку Форма диалогового окна База данных. Начать создание составной формы с использованием Мастера нажатием кнопки Создать.

В диалоговом окне Новая форма выбрать таблицу ПОСТАВЩИКИдля основной формы и тип создания - Мастер форм, нажать кнопку ОК. Далее выполнить последовательно:

- в окне первого шага Мастера Создания формы из таблицы ПОСТАВЩИКИвыбрать поля Код поставщика, Имя поставщика и Дата договора, в качестве полей основной формы, нажимая после выбора каждого указанного поля кнопку >. Далее выбрать таблицу ТОВАРЫ,содержащую данные для подчиненной формы, выбрать все поля таблицы ТОВАРЫв качестве полей подчиненной формы поля, нажав кнопку ». По окончании выбора нажать кнопку Далее >;

- в окне второго шага мастера Создания форм выбрать вид представления данных;

- в окне третьего шага выбрать внешний вид формы, например, выровненный.По окончании выбора нажать кнопку Далее >;

- в окне четвертого шага мастера Создания формвыбрать требуемый стиль формы. По окончании выбора нажать кнопку Далее >;

- в окне пятого шага мастера Создания формзадать имя формы ПОСТАВЩИКИ_ТОВАРЫи нажать кнопку Готово >. На экране появится новая составная форма, которая содержит как данные таблицы ПОСТАВЩИКИ,так и таблицы ТОВАРЫ.

Сохранить подчиненную форму, ввести в окно Сохранениеимя формы ПОСТАВЩИКИ_ТОВАРЫ.

Задание 3.Ввести новую информацию в таблицы ПОСТАВЩИКИ и ТОВАРЫ,используя составную форму.

Рекомендациипо выполнению:

На экране вывода составной формы ПОСТАВЩИКИ_ТОВАРЫпролистать данные таблицы ПОСТАВЩИКИдо конца, чтобы вывести пустую форму.

Сформировать новую запись:

Код поставщика Имя поставщика Дата договора Код товара Наименование товара Код поставщика
Совхоз «Победа» 25.01.99 Батон нарезной

Ввести самостоятельно недостающие данные в поля составной формы.

Сохранить составную форму, выбрав команду Сохранить пункта меню Файл.

В окне Сохранение ввести имя формы ПОСТАВЩИКИ_ТОВАРЫ.

Распечатать новую запись в режиме составной формы.

Закрыть форму.

Закрыть базу данных.

Контрольные вопросы

3. Что такое реляционная база данных?

4. Что значит - ключевое поле?

5. Охарактеризуйте отношение 1:1. Как устанавливается такая связь между таблицами?

6. Охарактеризуйте отношение 1:М. Когда устанавливается такая связь между таблицами?

7. Охарактеризуйте отношение М:М. Как устанавливается такая связь между таблицами?

8. Назначение и функции форм в СУБД.

9. Виды форм. Привести примеры.

10. Как осуществить редактирование формы?

ЛАБОРАТОРНАЯ РАБОТА № 8.2

Наши рекомендации