
- •Работа с бд в архитектуре ”клиент-сервер”
- •2.Работа с утилитой bde Administrator
- •2.1. Назначение bde Administrator
- •2.2. Создание псевдонима бд
- •3. Работа с утилитой Windows Interactive sql (wisql)
- •3.1. Создание новой бд
- •3.2. Установка соединения
- •3.3. Создание таблиц бд
- •3.4. Просмотр структуры компонентов базы данных
- •4.2. Создание триггера
- •4.3. Значения old и new
- •4.4. Обеспечение каскадных воздействий
- •5. Работа с хранимыми процедурами
- •5.1. Понятие хранимой процедуры
- •5.2. Создание хранимой процедуры
- •6. Использование генераторов
- •7.3. Сбор статистики о бд
- •7.3.1. Статистические данные непосредственно о бд
- •7.3.2. Анализ бд
- •7.4. Регистрация пользователей
- •7.5. Поддержка базы данных
- •Validate record fragments - проверять фрагменты записей
- •8.Задание к лабораторной работе
- •Работа с утилитой Windows Interactive sql (wisql)
- •9. Работа с утилитой InterBase Server Manager.
- •Приложение 1
- •Формат sql-операторов (субд InterBase)
- •База данных
- •Создание базы данных
- •Определение типа данных
- •Домены Создание домена
- •Ограничения, накладываемые на значения полей, ассоциированных с доменом
- •Определение ограничения внешнего ключа и ссылочной целостности с родительской таблицей
- •Удаление столбца (столбцов) из таблицы бд
- •Обращение к хранимой процедуре (утилита wisql)
- •Оператор выбора select
- •Принудительная выдача выходных параметров (только хранимые процедуры)
- •Отъем привилегий
- •Приложение 2 Пример Script-файла
Работа с бд в архитектуре ”клиент-сервер”
Работа с БД в архитектуре ”клиент-сервер” 1
1.SQL-сервер Borland InterBase и его основные компоненты 5
2.Работа с утилитой BDE Administrator 7
2.1. Назначение BDE Administrator 7
2.2. Создание псевдонима БД 7
3. Работа с утилитой Windows Interactive SQL (WISQL) 8
3.1. Создание новой БД 8
3.2. Установка соединения 9
3.3. Создание таблиц БД 9
CREATE TABLE BOOK ( 9
BOOK_ID INTEGER NOT NULL, 9
CREATE TABLE BOOK_IN_USE ( 10
3.4. Просмотр структуры компонентов базы данных 10
3.5. Просмотр структуры с помощью ISQL 11
3.6. Получение метаданных 11
4. Работа с триггерами 12
4.1. Назначение триггера 12
4.2. Создание триггера 13
BEGIN 14
4.3. Значения OLD и NEW 14
CREATE TRIGGER BU_TOVARY FOR TOVARY 14
BEFORE UPDATE 14
IF (OLD.TOVAR <> NEW.TOVAR) THEN 14
UPDATE RASHOD 14
SET TOVAR = NEW.TOVAR 14
END 14
4.4. Обеспечение каскадных воздействий 14
CREATE TABLE TOVARY( 15
PRIMARY KEY (TOVAR)); 15
CREATE TABLE RASHOD ( 15
PRIMARY KEY (N_RASH), 15
'IF (OLD.ПoлeCвязиPoдитeля <> NEW.Поле СвязиРодителя) THEN 15
WHERE ПолеСвязиДочернейТаблицы = 16
DELETE FROM ДочерняяТаблица 16
CREATE TRIGGER BU_TOVARY FOR TOVARY 16
ACTIVE 16
IF (OLD.TOVAR <> NEW.TOVAR) THEN 16
UPDATE RASHOD 16
SET TOVAR = NEW.TOVAR 16
END 16
CREATE TRIGGER AD__TOVARY FOR TOVARY 16
DELETE FROM RASHOD 17
END 17
Для удаления триггера следует воспользоваться оператором 17
DROP TRIGGER ИмяТриггера 17
5. Работа с хранимыми процедурами 17
5.1. Понятие хранимой процедуры 17
5.2. Создание хранимой процедуры 18
Хранимая процедура создается оператором 18
AS 18
END 19
CREATE PROCEDURE FIND_MAX_KOLVO (IN_TOVAR VARCHAR (20)) 19
SELECT MAX(KOLVO) FROM RASHOD 19
SUSPEND; 19
END 19
6. Использование генераторов 19
SET GENERATOR ИмяГенератора ТО СтартовоеЗначение; 20
GEN_ID (ИмяГенератора, шаг); 20
CREATE GENERATOR RASHOD_N_RASH; 21
SET GENERATOR RASHOD_N_RASH TO 20; 21
Обращение к генератору непосредственно из оператора 21
NEW .N_RASH = GEN_ID (RASHOD_N_RASH, 1); 21
END 21
INSERT INTO RASHOD (DAT_RASH, KOLVO, TOVAR, POKUP) 21
VALUES ( : DAT_RASH, : KOLVO, : TOVAR, : POKUP) 21
CREATE PROCEDURE GET_N_RASH 22
AS 22
BEGIN 22
END 22
7. Работа с утилитой InterBase Server Manager 22
7.1. Соединения 23
7.1.1. Соединение с сервером 23
7.1.2. Соединение с БД 23
7.1.3. Выбор текущего сервера и БД 23
7.1.4. Разрыв соединения 23
7.2. Изменение конфигурации сервера 23
7.3. Сбор статистики о БД 24
7.3.1. Статистические данные непосредственно о БД 24
7.3.2. Анализ БД 26
Информация о таблице БД 26
SPISKI (38) 26
Информация об индексе 27
7.4. Регистрация пользователей 27
7.5. Поддержка базы данных 28
Validate record fragments - проверять фрагменты записей 29
8.Задание к лабораторной работе 31
Приложение 1 32
Формат SQL-операторов (СУБД InterBase) 32
Определение типа данных 32
! {NCHAR ! NATIONAL CHARACTER ! NATIONAL CHAR} 32
! BLOB [(длина_сегмента [, подтип])] } 33
Домены 33
Создание домена 33
Изменение определения домена 34
ALTER DOMAIN имя { 34
Таблицы базы данных 34
Создание таблицы базы данных 34
Определение первичного ключа 34
Определение уникального ключа 34
Ограничения на значения столбца 35
Добавление новою столбца в таблицу БД 37
Добавление новых ограничений целостности 37
Удаление столбца (столбцов) из таблицы БД 37
Удаление ограничений целостности 37
Удаление таблицы БД целиком 37
Индексы 37
Создание индекса 37
CREATE [UNIQUE] [ASC [ENDING] ! DESC[ENDING]] 37
Деактивизация индекса 37
Активизация индекса 37
Вычисление показателя "полезности" индекса 37
Удаление индекса 38
Выборка данных из таблиц БД 38
SELECT [DISTINCT I ALL] {* ! <значение1> [, <значение2>…]} 38
Изменение данных 38
Добавление записей 38
Изменение записей 38
Удаление записей 38
Просмотры 39
Создание просмотра 39
Удаление просмотра 39
Хранимые процедуры 39
Создание хранимой процедуры 39
Обращение к хранимой процедуре (утилита WISQL) 39
Тело процедуры 39
BEGIN 39
END 39
Изменение хранимой процедуры 40
ALTER PROCEDURE ИмяПроцедуры 40
Удаление хранимой процедуры 40
DROP PROCEDURE ИмяПроцедуры; 40
Алгоритмический язык триггеров и хранимых процедур 40
Объявление локальных переменных 40
Оператор присваивания 40
Условный оператор 40
IF (<условие>) THEN 40
Оператор выбора SELECT 40
Оператор циклической выборки 41
SUSPEND; 41
Оператор цикла 41
Выход из процедуры, триггера 41
EXIT; 41
Вложенный вызов другой хранимой процедуры 41
Инициация наступления события 42
Обращение к старому и новому значениям столбца(только триггеры) 42
OLD.ИмяСтолбца 42
Триггеры 42
Создание триггера 42
Структура тела триггера 42
BEGIN 42
END 42
Изменение существующего триггера 42
ALTER TRIGGER ИмяТриггера FOR ИмяТаблицы 42
Удаление триггера 43
Генераторы 43
Создание генератора 43
Установка стартового значения генератора 43
SET GENERATOR ИмяГенератора ТО СтартовоеЗначение; 43
Транзакции 43
READ COMMITTED [[NO] RECORD_VERSION]}] 43
События 43
Инициация наступления события 43
UDF (Функции, определяемые пользователем) 43
Привилегии доступа 44
GRANT { 44
Отъем привилегий 44
REVOKE [GRANT OPTION FOR] { 44
Приложение 2 46
Пример Script-файла 46
CREATE TABLE POKUPATELI ( 46
POKUP VARCHAR (20) NOT NULL, 46
CREATE TABLE TOVARY( 46
TOVAR VARCHAR(20) NOT NULL, 47
CREATE TABLE RASHOD( 47
N_RASH INTEGER NOT NULL, 47
SET TERM ###; 47
CREATE PROCEDURE FIND_MAX_KOLVO (IN_TOVAR VARCHAR(20)) 47
RETURNS (MAX_KOLVO INTEGER) AS 47
BEGIN 47
SELECT MAX (KOLVO) 47
FROM RASHOD 47
SUSPEND; 47
END ### 48
RETURN (POK VARCHAR(20)) AS 48
BEGIN 48
SELECT AVG(KOLVO) 48
FROM RASHOD 48
WHERE TOVAR = : IN_TOVAR 48
FOR SELECT POKUP 48
FROM RASHOD 48
WHERE KOLVO>: AVG_KOLVO 48
DO 48
BEGIN 48
IF (:POK IS NULL) THEN 48
SUSPEND; 48
END 48
END ###' 48
CREATE TABLE TOVARY_LOG( 48
DAT_IZM DATE 48
CREATE TRIGGER TOVARY_ADD_LOG FOR TOVARY 49
AFTER INSERT 49
INSERT INTO TOVARY_LOG (DAT_IZM, DEISTV, OLD_TOVAR, 49
NEW_TOVAR) 49
VALUES ("NOW",”ADD”, “”, NEW.TOVAR); 49
END ### 49
CREATE TRIGGER TOVARY_UPD_LOG FOR TOVARY 49
INSERT INTO TOVARY_LOG (DAT_IZM, DEISTV, OLD_TOVAR, 49
NEW_TOVAR) 49
VALUES ("NOW", "UPD", OLD. TOVAR, NEW .TOVAR) ; 49
END ### 49
CREATE TRIGGER TOVARY_DEL_LOG FOR TOVARY 49
BEGIN 50
INSERT INTO TOVARY_LOG (DAT_IZM, DEISTV, OLD_TOVAR, 50
NEW_TOVAR) 50
VALUES ("NOW", "DEL",OLD.TOVAR,"") ; 50
SET TERM ; ### 50
COMMIT 50
1.SQL-сервер Borland InterBase и его основные компоненты
SQL-сервер Borland InterBase является "промышленной" СУБД, предназначенной для хранения и выдачи больших объемов данных при использовании архитектуры "клиент-сервер" в условиях одновременной работы с БД множества клиентских приложений. Масштаб информационной системы при этом произволен - от системы уровня рабочей группы (под управлением Novell Netware или Windows NT на базе IBM PC) до системы уровня большого предприятия (на базе серверов IBM, Hewlett-Packard, SUN). Рассмотрим ряд компонентов InterBase, использование которых обеспечивает максимальную вычислительную разгрузку клиентского приложения и гарантирует высокую безопасность и целостность информации . Для задания ссылочной и смысловой целостности в БД определяются:
• отношения подчиненности между таблицами БД путем определения первичных (PRIMARY) ключей у родительских и внешних (FOREIGN) ключей у дочерних таблиц; • ограничения на значения отдельных столбцов путем определения ограничений (CONSTRAINT) на значение домена или столбца, при этом условия ограничений могут быть весьма разнообразны - от требования попадания значения в определенный диапазон или соответствия маске до определенного отношения с одной или несколькими записями из другой таблицы (или многих таблиц) БД; ; • бизнес-правила при помощи триггеров (TRIGGER) – подпрограмм, автоматически выполняемых сервером до или (и) после события изменения записи в таблице БД; • уникальные значения нужных полей путем создания и использовании генераторов (GENERATOR). Для ускорения работы клиентских приложений с удаленной БД могут быть определены хранимые процедуры (STORED PROCEDURE), которые представляют собой подпрограммы, принимающие и возвращающие параметры и могущие выполнять запросы к БД, условные ветвления и циклическую обработку. Хранимые процедуры пишутся на специальном алгоритмическом языке. В хранимых процедурах программируются часто повторяемые последовательности запросов к БД. Текст процедур хранится на сервере в откомпилированном виде. Преимущества в использовании xранимых процедур очевидны: *отпадает необходимость синтаксической проверки каждого запроса и его компиляции перед выполнением, что убыстряет выполнение запроса; *отпадает необходимость реализации в приложении запросов, определенных в теле хранимых процедур ; *увеличивается скорость обработки транзакций, т.к. вместо подчас длинного SQL-запроса по сети передается относительно короткое обращение к хранимой процедуре.
В составе записи БД могут определяться BLOB-поля (Binary Large Object, большой двоичный объект), предназначенные для хранения больших объемов данных в виде последовательности байтов. Таким образом могут xpаниться текстовые и графические документы, файлы мультимедиа, звуковые и т.д. Интерпретация blob-поля выполняется в приложении, однако pазработчик может определить так называемые BLOB-фильтры для автоматического преобразования содержимого blob-поля к другому виду. ,.
InterBase дает возможность использовать определяемые пользователем функции (User Defined Function, UDF), в которых могут реализовываться функциональности, отсутствующие в стандартных встроенных функциях InterBase (вычисление максимума, минимума, среднего значения, преобразование типов и приведение букв к заглавным).
InterBase может посылать уведомления клиентским приложениям о наступлении какого-либо события (EVENT). Одновременно работающие приложения могут обмениваться сообщениями через сервер БД, вызывая хранимые процедуры, в которых реализована инициация нужного события.
Для обеспечения быстроты выполнения запросов и снятия с клиентского приложения необходимости такие запросы выдавать в БД можно oпределить виртуальные таблицы (или просмотры, VIEW), в которых объединяются записи из одной или более таблиц, соответствующих некоторому условию. Работа с просмотром из клиентского приложения ничем не отличается от работы с обычной таблицей. Поддерживает просмотр сервер, реагируя на изменение данных в БД.
Для доступа к БД используется утилита Windows Interactive SQl. (WISQL). Она ра6отаетсБД напрямую через InterBase API, минуя BDE. В WISQL можно выдавать любые запросы, будь то создание БД, таблиц, изменение структуры данных, а также назначение прав доступа к информации для отдельных пользователей.
Для управления SQL-сервером в целом и отдельными БД в частности используется утилита InterBase Server Manager.,.