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

Создание бд

При создании БД требуется указать ряд моментов:

  1. Тип сервера (локальный /удаленный), имя сервера и сетевой протокол доступа к серверу.

  2. Местонахождение и название файла будущей базы данных. Каталог для размещения БД у этому моменту должен быть создан.

  3. Имя пользователя и пароль для доступа. После установки на сервере зарегистрирован единственный пользователь SYSDBA с паролем masterkey.

  4. Размер страницы БД влияет на эффективность работы сервера (фактор влияния тем значительнее, чем больше размер БД). Файл базы данных разбивается на страницы фиксированного размера, и все обращения к диску выполняются постранично. Поэтому идеальным считается размер страницы совпадающий с размером записи и размером кластера диска. (Для NTFS — размер страницы = 4096 байт).

  5. Кодировка определяет символы какого национального алфавита будет использоваться в БД по умолчанию. Именно по умолчанию, потому что при определении таблиц можно для любого символьного поля указать любой набор используемых символов.

  6. Диалект может быть либо 1, либо 3 (диалект 2 используется для миграции между ними). Принципиально они отличаются: 1) диалект 3 позволяет использовать расширенный набор типов данных для работы с большими числами, для работы с датой и временем; 2) диалект 3 различает регистр идентификаторов, если идентификатор заключен в двойные кавычки; 3) диалект 3 не поддерживает неявное приведение типов данных (н-р, выражение '25'+5 в первом диалекте даст результат 30, а в третьем — ошибку несоответствия типов).

Рис. 1. Окно создания БД утилиты IBExpert

После создания БД можно создавать таблицы и другие объекты используя возможности GUI утилиты, либо при помощи SQL-редактора.

Для подключения к уже созданной БД на удаленном сервере, нужно указывать имя компьютера, на котором установлен сервер и полный путь к файлу БД, н-р, OUR_SERVER:C:\KINO\KINO.GDB

Инфологическая модель

В качестве примера выполнения лабораторной работы выбрана предметная область, условно названная KINO, содержащая информацию о кинофильмах, их продюсерах и снимающихся актерах.

Инфологическая модель представлена на рисунке:

Создание таблиц

Операторы, создающие таблицы выбранной предметной области:

CREATE DOMAIN D_Money INTEGER DEFAULT 0 CHECK (VALUE >= 0)

CREATE TABLE Prod ( id_pr INTEGER NOT NULL PRIMARY KEY, fio VARCHAR(30) NOT NULL, bd DATE, adres VARCHAR(50), money D_Money );

CREATE TABLE Movie ( id_m INTEGER NOT NULL PRIMARY KEY, title VARCHAR(40) NOT NULL UNIQUE, year INTEGER NOT NULL CHECK (year>1910), len INTEGER NOT NULL CHECK (len>20), kind CHAR(10) CHECK (kind IN ('Комедия', 'Боевик', 'Мелодрама')), id_pr INTEGER, FOREIGN KEY (id_pr) REFERENCES PROD ON DELETE SET NULL );

CREATE TABLE Star ( id_pr INTEGER NOT NULL PRIMARY KEY, fio VARCHAR(30) NOT NULL, bd DATE, adres VARCHAR(50), money D_Money );

CREATE TABLE StarIN ( Id_m INTEGER NOT NULL REFERENCES Movie ON UPDATE CASCADE ON DELETE CASCADE, Id_s, INTEGER NOT NULL REFERENCES Movie ON UPDATE CASCADE ON DELETE CASCADE, UNIQUE (Id_m, Id_m) );

CREATE INDEX I_Title ON Movie (Title);

CREATE INDEX I_FIO_Pr ON Prod (FIO);

CREATE INDEX I_FIO_St ON Movie (FIO);

Генераторы и автоинкремент

Суррогатные ключи, как известно, удобнее всего реализовывать при помощи механизма автоинкремента. В Interbase такой механизм в явном виде отсутствует. Однако, при помощи генераторов и триггеров не сложно добиться того же результата:

CREATE GENERATOR Gen_Movie_Id_m;

SET GENERATOR Gen_Movie_Id_m TO 1;

CREATE TRIGGER Trig_Movie_BI FOR MOVIE

ACTIVE BEFORE INSERT POSITION 0

AS BEGIN

IF (NEW.Id_m IS NULL) THEN NEW.Id_m = GEN_ID(Gen_Movie_Id_m,1);

END

Аналогичные скрипты — для других таблиц.

Триггеры

Одно из основных назначений триггеров — реализация бизнес-правил. Для примера, введем в нашей предметной области такое бизнес-правило: доход продюсера увеличивается на x% с каждым новым фильмом, где х — 10% от длины фильма.

CREATE TRIGGER INC_MONEY FOR MOVIE ACTIVE AFTER INSERT POSITION 0 AS declare variable x numeric(10, 5); begin x = NEW.LEN * 0.001; update prod set money=money * (1 + :x) where id_pr = NEW.id_pr; end

Хранимые процедуры

ХП делятся на возвращающие набор данных и действия, т.е. ничего не возвращающие. Пример ХП выборки: получить список актеров в порядке убывания количества фильмов с их участием.

CREATE PROCEDURE STAR_LIST RETURNS (FIO VARCHAR(30)) AS declare variable tmp INTEGER; begin FOR SELECT S.FIO, COUNT(*) FROM STAR S INNER JOIN "StarIN" SI ON S.ID_ST=SI.ID_S GROUP BY S.FIO ORDER BY 2 desc INTO :FIO, :tmp DO suspend; end

ХП действия не возвращают никаких данных, а только выполняют заложенный в них алгоритм.

Создание приложения

Общее описание основных компонентов, включенных в состав IBX:

Приложение-клиент разрабатывается при помощи программных средств Borland Delphi | C++ Builder, используя набор компонентов Interbase Express (IBX). Эти компоненты используют функции Intebase API, т.е. обращаются к серверу непосредственно.

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