Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Работа с БД в архитектуре 'клиент-сервер'_RTF.doc
Скачиваний:
0
Добавлен:
26.01.2020
Размер:
454.08 Кб
Скачать

50

Работа с бд в архитектуре ”клиент-сервер”

Работа с БД в архитектуре ”клиент-сервер” 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.,.