В. В. Воронин информационное обеспечение систем управления

Вид материалаДокументы

Содержание


USE BAZC IN c INDEX indKODFC
VFP в конструкторе баз данных можно создать постоянные динамические связи между DBF
Grid на форме нужно знать следующее. В Grid
SQL является реляционно-полным. Это означает, что любая операция реляционной алгебры может быть выражена подходящей командой SQL
Подобный материал:
1   ...   4   5   6   7   8   9   10   11   ...   14

В этом примере установлена связь вида

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

Н
иже приведен фрагмент командного файла для реализации данной схемы.


USE BAZV IN a

USE BAZF IN b INDEX indKODVF

USE BAZC IN c INDEX indKODFC

USE BAZK IN d INDEX indKODCK

USE BAZS IN f INDEX indKODCC

SELECT a

SET RELATION TO KODV INTO b

SET SKIP TO b

SELECT b

SET RELATION TO KODF INTO c

SET SKIP TO c

SELECT c

SET RELATION TO KODC INTO d

SET RELATION TO KODC INTO f ADDITIVE

Аппарат сцепления баз является мощным средством доступа к родственным связям. Однако, оно может отнимать много времени из-за синхронного перемещения указателей записей. Поэтому, если доступ к младшим базам в данный момент не нужен, то сцепление лучше отключить.

В VFP в конструкторе баз данных можно создать постоянные динамические связи между DBF-файлами, входящими в базу данных, т.е. объединённые посредством DBС-файла. Они автоматически активизируются при открытии соответствующих DBF-файлов. Эти связи отличаются от связей, создаваемых командой SET RELATION тем, что они сохраняются после выхода из VFPDBС-файле). Чтобы создать такие связи между двумя DBF-файлами, необходимо каждый из них проиндексировать. В окне конструктора баз данных для каждого DBF-файла есть своя область, в которой перечислены все его поля и все индексы. Для создания связи следует “захватить” мышью имя индекса одного файла и перенести его на место нужного индекса другого файла. Откроется окно, в котором будет представлена информация о созданной связи. Будут перечислены имена DBF-файлов, их индексы и вид связи 1:1 или 1:М. Вид связи система определяет автоматически. Делает она это по типу индексов. Если оба индекса типа primary или condidate, то связь имеет тип 1:1, а если второй индекс типа regular , то связь 1:М. Нажав ОК; связь будет зафиксирована. Это отразится в окне конструктора линией, соединяющей связанные индексы.

Определить динамические связи можно также в конструкторе форм при задании «окружения данными». Класс «окружения данными» отличается от обычных классов VFP. Он является контейнером только для таких классов как Cursor и Relation, ассоциированных с объектами типа form, formset или отчет.

В этом случае следует захватить мышью поле из родительского курсора и перетащить его на соответствующий индекс в дочернем курсоре. Если два DBF-файла были связаны в конструкторе баз данных, то при включении их в «окружение данных» они останутся связанными по двум индексам.

При использовании объекта Grid на форме нужно знать следующее.
  • В Grid можно поместить поля только из одной таблицы.
  • Для двух связанных таблиц по типу 1:М в Grid можно поместить только дочернюю таблицу, если при этом поле из родительской таблицы поместить в ComboBox , то для каждого его элемента в Grid будут отображаться связанные записи.
  • В Grid можно поместить локальный вид, а его сформировать на основе нескольких таблиц.


6. ЯЗЫК ЗАПРОСОВ SQL

6.1. Типовые запросы

Язык SQL стал фактически стандартным языком доступа к базам данных. Все СУБД, претендующие на название "реляционные", реализуют тот или иной диалект SQL. Целью стандартизации является переносимость приложений между различными СУБД.

Язык SQL является реляционно-полным. Это означает, что любая операция реляционной алгебры может быть выражена подходящей командой SQL.

При классификации языковых средств было сказано, что кроме ЯОД и ЯМД, СУБД VFP поддерживает также язык запросов SQL.

Обращение к базе данных с определенной целью называют запросом. СУБД VFP поддерживает подмножество языка SQL, которое обеспечивает реализацию следующих запросов.
  • Запрос на добавление записи в DBF-файл (INSERT).
  • Запрос на выборку записей (SELECT).
  • Запрос на корректировку записей (UPDATE).
  • Запрос на удаление записей (DELETE).
  • Запрос на создание DBF-файла (CREATE TABLE).
  • Запрос на модификацию DBF-файла (ALTER TABLE).
  • Запрос на создание временной таблицы (CREATE CURSOR).

Команды SQL в VFP работают быстрее благодаря использованию технологии Rushmore, и одна команда SQL может заменить несколько команд языка манипулирования данными.

Чаще используют запросы на выборку записей. Если запрос на выборку адресован одному DBF-файлу, то его принято называть простым, в противном случае – сложным. Даже простых запросов можно сформулировать достаточно много. Чтобы ориентироваться в этом многообразии приведем классификацию простых запросов. Она представлена в табл. 6.1. Примеры запросов в табл. 6.1 будем иллюстрировать DBF-файлом СОТРУДНИКИ, содержащим сведения о сотрудниках кафедры, ниже приведена его логическая структура.

СОТРУДНИКИ

Tnom

FIO


Kdol

ZP1


ZP12


Okl

DR

ZPS