Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Text1.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
217.09 Кб
Скачать

51

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

Работа с БД в архитектуре ”клиент-сервер” 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" установится соединение с базой данных и можно приступать к дальнейшей работе.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]