Реализация распределенной БД
При использовании режима клиент-сервер возникают такие задачи для сервера и клиентов.
Для сервера
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.