
- •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, 10
CREATE TABLE BOOK_IN_USE ( 10
3.4. Просмотр структуры компонентов базы данных 10
3.5. Просмотр структуры с помощью ISQL 11
3.6. Получение метаданных 12
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 15
END 15
4.4. Обеспечение каскадных воздействий 15
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 16
WHERE ПолеСвязиДочернейТаблицы = 16
DELETE FROM ДочерняяТаблица 16
CREATE TRIGGER BU_TOVARY FOR TOVARY 16
ACTIVE 16
IF (OLD.TOVAR <> NEW.TOVAR) THEN 17
UPDATE RASHOD 17
SET TOVAR = NEW.TOVAR 17
END 17
CREATE TRIGGER AD__TOVARY FOR TOVARY 17
DELETE FROM RASHOD 17
END 17
Для удаления триггера следует воспользоваться оператором 17
DROP TRIGGER ИмяТриггера 17
5. Работа с хранимыми процедурами 17
5.1. Понятие хранимой процедуры 17
5.2. Создание хранимой процедуры 18
Хранимая процедура создается оператором 18
AS 19
END 19
CREATE PROCEDURE FIND_MAX_KOLVO (IN_TOVAR VARCHAR (20)) 19
SELECT MAX(KOLVO) FROM RASHOD 19
SUSPEND; 20
END 20
6. Использование генераторов 20
SET GENERATOR ИмяГенератора ТО СтартовоеЗначение; 20
GEN_ID (ИмяГенератора, шаг); 21
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 22
INSERT INTO RASHOD (DAT_RASH, KOLVO, TOVAR, POKUP) 22
VALUES ( : DAT_RASH, : KOLVO, : TOVAR, : POKUP) 22
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 - проверять фрагменты записей 30
8.Задание к лабораторной работе 32
Приложение 1 33
Формат SQL-операторов (СУБД InterBase) 33
Определение типа данных 33
! {NCHAR ! NATIONAL CHARACTER ! NATIONAL CHAR} 33
! BLOB [(длина_сегмента [, подтип])] } 34
Домены 34
Создание домена 34
Изменение определения домена 35
ALTER DOMAIN имя { 35
Таблицы базы данных 35
Создание таблицы базы данных 35
Определение первичного ключа 35
Определение уникального ключа 35
Ограничения на значения столбца 36
Добавление новою столбца в таблицу БД 38
Добавление новых ограничений целостности 38
Удаление столбца (столбцов) из таблицы БД 38
Удаление ограничений целостности 38
Удаление таблицы БД целиком 38
Индексы 38
Создание индекса 38
CREATE [UNIQUE] [ASC [ENDING] ! DESC[ENDING]] 38
Деактивизация индекса 38
Активизация индекса 38
Вычисление показателя "полезности" индекса 38
Удаление индекса 39
Выборка данных из таблиц БД 39
SELECT [DISTINCT I ALL] {* ! <значение1> [, <значение2>…]} 39
Изменение данных 39
Добавление записей 39
Изменение записей 39
Удаление записей 39
Просмотры 40
Создание просмотра 40
Удаление просмотра 40
Хранимые процедуры 40
Создание хранимой процедуры 40
Обращение к хранимой процедуре (утилита WISQL) 40
Тело процедуры 40
BEGIN 40
END 40
Изменение хранимой процедуры 41
ALTER PROCEDURE ИмяПроцедуры 41
Удаление хранимой процедуры 41
DROP PROCEDURE ИмяПроцедуры; 41
Алгоритмический язык триггеров и хранимых процедур 41
Объявление локальных переменных 41
Оператор присваивания 41
Условный оператор 41
IF (<условие>) THEN 41
Оператор выбора SELECT 41
Оператор циклической выборки 42
SUSPEND; 42
Оператор цикла 42
Выход из процедуры, триггера 42
EXIT; 42
Вложенный вызов другой хранимой процедуры 42
Инициация наступления события 43
Обращение к старому и новому значениям столбца(только триггеры) 43
OLD.ИмяСтолбца 43
Триггеры 43
Создание триггера 43
Структура тела триггера 43
BEGIN 43
END 43
Изменение существующего триггера 43
ALTER TRIGGER ИмяТриггера FOR ИмяТаблицы 43
Удаление триггера 44
Генераторы 44
Создание генератора 44
Установка стартового значения генератора 44
SET GENERATOR ИмяГенератора ТО СтартовоеЗначение; 44
Транзакции 44
READ COMMITTED [[NO] RECORD_VERSION]}] 44
События 44
Инициация наступления события 44
UDF (Функции, определяемые пользователем) 44
Привилегии доступа 45
GRANT { 45
Отъем привилегий 46
REVOKE [GRANT OPTION FOR] { 46
Приложение 2 47
Пример Script-файла 47
CREATE TABLE POKUPATELI ( 47
POKUP VARCHAR (20) NOT NULL, 47
CREATE TABLE TOVARY( 48
TOVAR VARCHAR(20) NOT NULL, 48
CREATE TABLE RASHOD( 48
N_RASH INTEGER NOT NULL, 48
SET TERM ###; 48
CREATE PROCEDURE FIND_MAX_KOLVO (IN_TOVAR VARCHAR(20)) 48
RETURNS (MAX_KOLVO INTEGER) AS 48
BEGIN 48
SELECT MAX (KOLVO) 49
FROM RASHOD 49
SUSPEND; 49
END ### 49
RETURN (POK VARCHAR(20)) AS 49
BEGIN 49
SELECT AVG(KOLVO) 49
FROM RASHOD 49
WHERE TOVAR = : IN_TOVAR 49
FOR SELECT POKUP 49
FROM RASHOD 49
WHERE KOLVO>: AVG_KOLVO 49
DO 49
BEGIN 49
IF (:POK IS NULL) THEN 49
SUSPEND; 49
END 50
END ###' 50
CREATE TABLE TOVARY_LOG( 50
DAT_IZM DATE 50
CREATE TRIGGER TOVARY_ADD_LOG FOR TOVARY 50
AFTER INSERT 50
INSERT INTO TOVARY_LOG (DAT_IZM, DEISTV, OLD_TOVAR, 50
NEW_TOVAR) 50
VALUES ("NOW",”ADD”, “”, NEW.TOVAR); 50
END ### 50
CREATE TRIGGER TOVARY_UPD_LOG FOR TOVARY 50
INSERT INTO TOVARY_LOG (DAT_IZM, DEISTV, OLD_TOVAR, 50
NEW_TOVAR) 50
VALUES ("NOW", "UPD", OLD. TOVAR, NEW .TOVAR) ; 51
END ### 51
CREATE TRIGGER TOVARY_DEL_LOG FOR TOVARY 51
BEGIN 51
INSERT INTO TOVARY_LOG (DAT_IZM, DEISTV, OLD_TOVAR, 51
NEW_TOVAR) 51
VALUES ("NOW", "DEL",OLD.TOVAR,"") ; 51
SET TERM ; ### 51
COMMIT 51
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.,.
2.Работа с утилитой bde Administrator
2.1. Назначение bde Administrator
В Delphi для доступа к базам данных из приложения, как известно, используется цепочка "Приложение -> BDE -> База данных". Это означает, что при любом обращении к БД из приложения реально адресуется BDE (напомним, это аббревиатура Borland Database Engine, машины баз данных фирмы Borland). BDE, используя собственные функции, связывается непосредственно с базой данных. Для работы с конкретной базой данных BDE, во-первых, должна знать:
• где БД физически расположена;
• параметры этой БД;
• общие параметры драйвера БД того типа, к которому принадлежит обрабатываемая БД;
• общие системные установки.
Параметры драйвера БД определяют параметры конкретной БД, значения которых не указаны. Системные установки являются общими для всех драйверов.
2.2. Создание псевдонима бд
Параметры БД и ее местоположение определяются псевдонимом БД. Псевдоним - это некоторое имя (псевдоним БД). Именно этот псевдоним и используют при логическом обращении к БД компоненты типа "набор данных" приложения Delphi, например ТТаЫе и TQuery. BDE считывает параметры, поставленные в соответствие данному псевдониму, что во многом определяет ее дальнейшие действия по физической работе с БД.
Псевдонимы баз данных определяются в утилите BDE Administrator. Для того, чтобы определить псевдоним, необходимо:
1. Выбрать элемент меню Object \ New.
2. Выбрать в появившемся окне имя драйвера базы данных (STANDARD для Paradox и dBase, MSACCESS для Microsoft Access, ORACLE, INTRBASE, SYBASE, MSSQL, INFORMIX, DB2 соответственно для баз данных Oracle, InterBase, Sybase, MS SQL Server, Informix, DB2 и, если установлен, драйвер ODBC);
3. Ввести имя псевдонима в левом окне.
4. Определить необходимые параметры псевдонима в правом окне.
5. Щелкнуть по псевдониму правой кнопкой мыши и выбрать во всплывающем меню элемент Appiy для подтверждения или Cancel для отказа.
3. Работа с утилитой Windows Interactive sql (wisql)
Утилита Windows ISQL позволяет интерактивно выполнять SQL запросы к базе данных и получать результат. Это требуется в двух случаях: для отладки SQL выражения и для управления данными и их структурой. Кроме того, создать базу данных, хранимые процедуры, триггеры, и т.п. также удобнее с помощью ISQL. ISQL позволяет обращаться как к данным на удаленном сервере, так и к локальным.
Рассмотрим порядок работы с этой программой. Прежде, чем начать работу, нужно либо установить соединение с имеющейся базой данных, либо создать новую базу.
3.1. Создание новой бд
Эту операцию можно выполнить в пункте меню File|Create Database.
Location Info- информация о расположении создаваемой БД. Local Server-данный компьютер;Remote Server-удаленный компьютер. В последнем случае необходимо указать имя сервера и сетевой протокол. В случае использования удаленного сервера:
Database Name-определяет имя создаваемой БД и полный путь к ней (поле Database). Далее необходимо ввести имя пользователя и пароль.
Defauit Option-параметры создаваемой БД.
3.2. Установка соединения
Для соединения с БД необходимо выбрать элемент меню File | Connect to Database и указать реквизиты базы данных
Location Info- информация о расположении БД. Local Server-данный компьютер;Remote Server-удаленный компьютер. В последнем случае необходимо указать имя сервера и сетевой протокол.
Database Name- имя БД и полный путь к ней (поле Database). Далее необходимо ввести имя пользователя и пароль.
Если все указано правильно, то по нажатию клавиши "OK" установится соединение с базой данных и можно приступать к дальнейшей работе.