Реализация распределенной БД

При использовании режима клиент-сервер возникают такие задачи для сервера и клиентов.

Для сервера

1. Построение структуры системы таблиц на сервере, возможно с системой запросов (видов) для заполнения таблиц, с установлением связей между таблицами.

2. Заполнение таблиц данными.

3. Обеспечение доступа через виды, запросы и хранимые процедуры.

Для клиентов

1. Разработать необходимые приложения.

2. Построить соответствующие интерфейсы пользователей.

В данной главе рассмотрим локальный вариант режима клиент- сервер. Особенности формирования удаленного варианта с одно- и многоуровневой структурой обсудим в гл. 15.

Собственно база данных. Необходимо выполнить следующие работы.

• Построение таблиц.

• Установление связей между таблицами для осуществления ссылочной целостности в РБД.

• Использование хранимых процедур для обеспечения ссылочной целостности.

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

• Загрузка таблиц данными из существующей БД "Учебный процесс".

Построение структуры таблиц

Все операции по созданию структуры таблиц РБД в InterBase осуществляются при помощи утилиты Windows 1SQL (WISQL), поставляемой в комплекте с сервером РБД (рис. 14.14).

Рис. 14.14. Окно Windows ISQL

Создание таблиц и других объектов РБД выполняется на языке SQL.

Язык QBE серьезно ограничивает разработчика и позволяет ему создавать запросы только по готовым шаблонам, которые были заложены создателями языка.

Приведем пример создания таблицы gruppa:

/* Table: GRUPPA, Owner: SYSDBA */

CREATE TABLE GRUPPA (NG VARCHAR(6) CHARACTER SET WIN 1251 NOT NULL,

NAZVANIE VARCHAR{6) CHARACTER SET WIN 1251,

OTD VARCHAR(20) CHARACTER SET WIN1251,

STAROSTA VARCHAR(20) CHARACTER SET WIN1251,

STAR_POLN VARCHAR(50) CHARACTER SET WIN 1251,

KURATOR VARCHAR(20) CHARACTER SET WIN 1251,

KURS VARCHAR(50) CHARACTER SET WIN 1251,

SH_SPEC INTEGER NOT NULL,

GOD_NABOR INTEGER,

STUDENTOV INTEGER,

DEVUSHEK INTEGER,

UNOSHEY INTEGER,

BESPLATN INTEGER,

CHAST INTEGER,

POLNPLATN INTEGER,

CONSTRAINT GRUPPRIMKEY1 PRIMARY KEY (NG));

Последняя строка указывает на то, что поле NG (номер группы) является первичным ключом. Инструкция типа SH_SPF.C INTEGER NOT NULL указывает на то, что необходимо создать колонку sh_spec типа Integer с обязательным ненулевым значением.

Всего РБД насчитывает 18 таблиц:

• ArhivStud – архивная таблица, содержащая информацию об успеваемости студентов, за прошедшие семестры;

• Gruppa – список всех групп;

• IPP – таблица, хранящая информацию о прохождении студентами производственной практики;

• Izuchenie – таблица с информацией об изучаемых предметах в группах;

• Kafedra – список кафедр;

• Laba – список;

• Obshegit – список студентов, живущих в общежитиях;

• Oplata – информация об оплате студентами своего обучения;

• Predmet – список преподаваемых предметов;

• Predpr – список предприятий, на которых проходят производственную практику студенты;

• Prepod – список преподавателей;

• Prikaz – приказы;

• Specialnost – список специальностей;

• Student – список обучающихся студентов и сведения о них;

• TempUsp – промежуточная таблица, необходимая для генерации сложных отчетов, которые не могут быть организованы только с использованием запросов;

• Uspevaem – информация о сдаче сессии студентами;

• Vid_prikaz – виды приказов.

После создания таблиц программист может извлечь из РБД SQL- команды, которые он вводил в процессе создания таблиц. Такая информация, получаемая из РБД, называется метаданными. Текстовый файл, содержащий метаданные, может быть в случае необходимости повторно выполнен, что позволит в случае полной потери РБД, восстановить ее структуру без повторного, утомительного набивания всех SQL-команд. Для получения подобной информации необходимо в утилите Windows ISQL выбрать в меню Extract/SQL Metadata for DataBase, после чего указать имя файла, в котором необходимо сохранить метаданные. Листинг SQL-программ разработанной РБД приведен в Приложении 2.