Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
db / Лабораторный практикум по БД_2013.DOC
Скачиваний:
19
Добавлен:
16.03.2015
Размер:
277.5 Кб
Скачать

Лабораторная работа №8 программирование: индексирование таблиц и установление связей между таблицами при создании баз данных

Теоретические сведения.

Во второй лабораторной работе были рассмотрены инструментальные средства создания баз данных как совокупности взаимосвязанных таблиц. При сложной взаимосвязи таблиц бывает удобно программным способом явно установить нужные связи, указав предварительно индексные поля. Подробный формат команд, используемых для выполнения вышеназванных действий можно посмотреть в Help, здесь же эти команды будут перечислены и названы их основные особенности. Для создания индексного файла используется команда Index On <индексное выражение> To <имя индексного файла> … Индексные файлы могут быть открыты совместно с открытием базы данных командой

Use <имя таблицы> IN <рабочая область > INDEX <имя индексного файла>.

Если база данных уже открыта, то индесные файлы можно открыть командой

Set Index To<список индексных файлов >. Один из списка индексных файлов можно сделать главным (по умолчанию это первый в списке файл), воспользовавшись командой Set Order To <номер файла в списке>.

В FoxPro допускается работа сразу с несколькими таблицами данных и при этом возможно установление разнообразных связей между ними. Указатели записей в таких связанных таблицах будут двигаться синхронно. Таблица, в которой указатель движется произвольно, считается старшей, а таблицы, в которых указатель следует за указателем старшей базы, - младшей. В старшей и младших таблицах должны быть поля, несущие общий признак, иначе хотя связь и возможна, она будет бессмысленна. Допускается сцепление одной таблицы с несколькими другими. Младшие таблицы, в свою очередь, могут быть связаны с базами данных следующего уровня и так далее.

Как уже было сказано ранее, возможно установление двух типов связей между записями связанных таблиц. Связь типа одна запись к одной перемещает указатель в младшей базе таким образом, что он всегда устанавливается на первую встреченную им запись с совпадающим признаком. Остальные такие записи (если они есть) остаются “не замеченными”. Эта связь устанавливается командой SET RELATION. Связь типа одна запись ко многим позволяет обратиться ко всем записям младшей базы с совпадающим индексом. Для установления связи такого типа после команды SET RELATION следует команда SET SKIP TO.

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

SELECT <рабочая область/псевдоним>

Первые десять рабочих областей идентифицируются номерами 1-10 или буквами A – J. Области с 11-й по 25-ю обозначаются номерами W-11 – W25. Рабочие области и файлы таблиц базы данных могут идентифицироваться псевдонимами. Псевдонимом области по умолчанию является само имя находящегося в ней файла базы данных. В качестве псевдонима можно указать и любое другое слово в команде USE. Область, в которой мы находимся в данный момент, называется активной рабочей областью, и в ней можно работать с находящейся в ней таблицей, выполняя все допустимые команды системы. Одновременно даже в одной команде можно иметь доступ к полям других баз, В этом случае имя поля из неактивной области – составное. Собственно имени поля предшествует имя рабочей области или псевдоним, разделенные знаками ‘-’,’>’ или (что более удобно) точкой:

<рабочая область/псевдоним>-><имя поля>

<рабочая область/псевдоним>. <имя поля>.

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

Set Relation To <ключ> Into <рабочая область>

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

Set Skip To <список областей>,

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

Следует отметить, что при выполнении команды SELECT языка SQL (не путайте с командой SELECT <рабочая область>), осуществляющей выборку данных из нескольких таблиц, связь между которыми явно программным способом не установлена, все действия будут реализованы оптимизатором запросов и поиск данных выполнен с учетом всех необходимых связей.

Задание на лабораторную работу.

  1. Создать формы, в которых кроме полей базы данных “Студенты”, содержатся кнопки: связь 1:1, связь 1:n, связь n:m. Написать программный код на каждую из кнопок соответственно, выполняющий следующие действия:

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

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

  3. установить связь m:n между таблицами сведений о группах и курсах с использованием таблицы на связь и вывести сведения о всех курсах, изучаемых в конкретной группе.

Соседние файлы в папке db