Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная_работа_8.doc
Скачиваний:
2
Добавлен:
23.11.2019
Размер:
243.2 Кб
Скачать

10

ЛАБОРАТОРНАЯ РАБОТА № 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 показаны установленные межтабличные связи.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ПРАКТИКУМ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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