Программа управления БД InterBase с архитектурой

advertisement
Министерство образования Российской Федерации
Государственное образовательное учреждение высшего
профессионального образования
“Хабаровский государственный технический университет”
ПРОЕКТИРОВАНИЕ ИНФОРМАЦИОННЫХ СИСТЕМ
Методические указания к выполнению практического задания № 6
для студентов специальности 071900 “Информационные системы
и технологии”
Хабаровск
Издательство ХГТУ
2003
2
УДК
681.58:681.32
Проектирование информационных систем: Методические указания к выполнению
практического задания № 6 для студентов специальности 071900 «Информационные
системы и технологии» / Сост. Г. К. Конопелько. – Хабаровск: Изд-во Хабар. гос. техн. ун-та,
2003. – 11 с.
Методические указания составлены на кафедре «Автоматика и системотехника». В них
приводятся задание на практическую работу, требования по оформлению отчета, а также
краткие общие сведения. Дается перечень рекомендованной литературы, необходимой для
выполнения задания.
Печатается в соответствии с решениями кафедры "Автоматика и системотехника" и
методического совета института информационных технологий.
© Хабаровский государственный
технический университет, 2003
3
Разработка программы управления БД InterBase с
архитектурой «клиент-сервер»
Цель работы: изучить основные компоненты баз данных InterBase, научиться
разрабатывать приложения архитектуры «клиент-сервер».
Введение
Практическое задание выполняется в локальной сети на рабочей станции с
операционной системой Windows 95/98, 2000, XP или более поздней, с установленным
сервером с операционной системой Linux версии не ниже пятой.
Порядок выполнения практического задания
1. Подготовка и допуск к работе
К выполнению практического задания допускаются студенты, которые подготовились к
работе и имеют не более двух невыполненных предыдущих заданий.
Перед работой студент должен:
 предъявить преподавателю полностью оформленный отчет о предыдущей работе;
 ответить на вопросы преподавателя.
К работе не допускаются студенты, которые не выполнили одно из вышеперечисленных
требований.
2. Отчёт по работе должен содержать следующее:
- Текст задания.
- Перечень всех использованных в практической работе команд и инструкций.
- Вывод по работе.
Общие сведения
База данных InterBase состоит из различных объектов, таких, как таблицы, виды,
домены, сохраненные процедуры, триггеры. Объекты базы данных содержат всю
информацию о ее структуре и данных. Объекты базы данных так же упоминаются, как
метаданные.
Таблицы (Tables)
Реляционные базы данных хранят все данные в таблицах. Таблица это структура,
состоящая из множества неупорядоченных горизонтальных строк (rows), каждая из которых
4
содержит одинаковое количество вертикальных столбцов (colums). Пересечение отдельной
строки и столбца называется полем (field), которое содержит специфическую информацию.
Многие принципы работы реляционной базы данных взяты из определений отношений
(relations) между таблицами.
InterBase хранит информацию о метаданных в специальных таблицах, которые
называются системными таблицами (system tables). Системные таблицы имеют специальные
столбцы, которые содержат информацию о типе метаданных в этой таблице. Имена всех
системных таблиц начинаются с "RDB$". Пример системной таблицы - RDB$RELATIONS,
которая содержит информацию о каждой таблице в базе данных.
Системные таблицы имеют такую же структуру, как и определенные пользователем
таблицы, и расположены в той же самой базе. Так как метаданные, пользовательские
таблицы, и данные все вместе расположены в одном и том же файле базы данных, каждая
база данных является законченным модулем и может быть легко перенесена между
различными машинами.
Системные таблицы могут быть изменены подобно любой другой таблице базы данных.
Если вы не понимаете всех взаимосвязей между системными таблицами, то
непосредственное изменение их может иметь негативный эффект на другие системные
таблицы и разрушить вашу базу данных.
Столбцы (Columns)
Создание таблицы главным образом подразумевает определение столбцов таблицы.
Главные атрибуты столбца включают:

имя столбца;

тип данных столбца или домен, на котором он базируется;

может или нет поле столбца принимать значение NULL;
 факультативно справочные ограничения целостности (referential integrity
constraints).
Типы данных (Data types)
Данные сохранены в определенном формате, который называется типом данных (data
type). Типы данных могут быть классифицированы по четырем категориям: числовые
(numeric), символьные (character), даты (date) и BLOB. Числовые данные включают в себя
все числа, начиная с целых вплоть до чисел двойной точности с плавающей точкой.
Символьные данные содержат строки текста. Даты используются для хранения дат и
времени.
В то время как числовые, символьные и даты являются стандартными типами данных,
BLOB-тип заслуживает специального внимания.
Тип данных BLOB
InterBase поддерживает такой тип данных, как большие бинарные объекты (binary
large object - BLOB), которые могут хранить данные неограниченного размера. Тип BLOB это расширение стандартной реляционной модели, которая обычно обеспечивает только
типы данных фиксированной длины.
5
Тип данных BLOB аналогичен последовательному файлу (flat file), BLOB-данные могут
быть сохранены в любом формате (к примеру, бинарном или ASCII). BLOB, однако, это не
отдельный файл. BLOB-данные хранятся в базе данных наряду со всеми другими данными.
Так как BLOB-столбцы часто содержат большие и переменные объемы данных, BLOBстолбцы хранятся в отдельных сегментах.
InterBase не поддерживает непосредственно преобразование BLOB-данных в другие
форматы, но на некоторых платформах, BLOB-фильтры могут транслировать BLOB- данные
из одного формата в другой.
Домены (Domains)
В добавление к явному определению типа данных столбцов InterBase обеспечивает
глобальные определения столбцов или домены (domains), на которых могут базироваться
определения столбцов. Домен содержит информацию о типе данных, устанавливает
атрибуты и ограничения целостности столбцов. В последующем при создании таблиц
возможно использовать домены для определения столбцов.
Справочные ограничения целостности (Referential integrity constraints)
InterBase позволяет вам определять правила, обеспечивающие целостность
информации, хранящейся в столбцах, эти правила названы справочными ограничениями
целостности (referential integrity constraints). Ограничения целостности управляют связями
типа столбец-таблица (column-to-table) и таблица-таблица (table-to-table) а также проверкой
ввода данных. Они выполнены через первичные ключи (primary keys), внешние ключи
(foreign keys) и проверочные ограничения (check constraints). Обычно первичный ключ - это
столбец (или группа столбцов), которые используются, чтобы уникально идентифицировать
строку таблицы. Внешний ключ - это столбец, чьи значения должны соответствовать
значениям столбца в другой таблице. Проверочные ограничения ограничивают ввод данных
определенным диапазоном или набором значений.
Например, таблица EMPLOYEE могла бы быть определена имеющей внешний ключстолбец DEPT_NO, который определен в соответствии со столбцом номера отдела в таблице
DEPARTMENT. Это гарантировало бы, что каждый служащий из таблицы EMPLOYEE
будет связан с существующим отделом в таблице DEPARTMENT.
Индексы (Indexes)
Индексы - это механизм для улучшения быстродействия поиска данных. Индекс
определяет столбцы, которые могут быть использованы для эффективного поиска и
сортировки в таблице.
InterBase автоматически определят уникальные индексы для первичных и внешних
ключей таблицы.
Виды (Views)
Вид (view) - это виртуальная таблица, которая не сохранена физически в базе данных,
но ведет себя точно так же, как "реальная" таблица. Вид может содержать данные из одной
или более таблиц или других видов и используется для хранения часто используемых
запросов (queries) или множества запросов в базе данных.
Виды могут также обеспечивать ограниченные средства защиты, так как они могут
обеспечивать доступ пользователей к подмножеству доступных данных при скрытии других
связанных и чувствительных данных.
6
Сохраненные процедуры (Stored procedures)
Сохраненные процедуры (stored procedure) - это отдельные программы, написанные на
языке процедур и триггеров InterBase , который является расширением SQL. Сохраненные
процедуры являются частью метаданных базы данных. Сохраненные процедуры могут
получать входные параметры, возвращать значения приложению и могут быть вызваны явно
из приложения или подстановкой вместо имени таблицы в инструкции SELECT.
Сохраненные процедуры обеспечивают следующие возможности:
 Модульный проект: сохраненные процедуры могут быть общими для
приложений, которые обращаются к той же самой базе данных, что позволяет
избегать повторяющегося кода и уменьшает размер приложений.
 Упрощают сопровождение приложений: при обновлении процедур
изменения автоматически отражаются во всех приложениях, которые их используют
без необходимости повторной компиляции и сборки.
 Улучшают эффективность работы: особенно для удаленных клиентов.
Сохраненные процедуры выполняются сервером, а не клиентом, что снижает сетевой
трафик.
Триггеры (Triggers)
Триггеры - это отдельная программа, ассоциированная с таблицей или видом, которая
автоматически выполняет действия при добавлении, изменении или удалении строки в
таблице или виде.
Триггеры могут обеспечивать следующие возможности:
 Автоматическое ограничение ввода данных, чтобы гарантировать то, что
пользователь ввел только допустимые значения в поля столбцов.
 Упрощение сопровождения приложений, так как изменение в триггере
автоматически отражается во всех приложения, которые используют таблицы со
связанными с ними триггерами.
 Автоматическое документирование изменений таблицы. Приложение может
упровлять логом изменений с помощью триггиров, которые выполняются всякий раз,
когда происходит изменение таблицы.
Когда триггер вызван, он имеет непосредственный доступ к добавлению, изменению
или уничтожению данных. Триггеру могут быть также доступны данные из других таблиц.
Вы можете разрабатывать триггеры:

для завершения операции, возможно с сообщением об ошибке;

установки значений в записи к которой вы обращаетесь;

добавления, изменения или удаления строк в других таблицах.
Генераторы (Generators)
Генератор (generator) - это механизм, который создает последовательный уникальный
номер, который автоматически вставляется в столбец базой данных, когда выполняются
7
операции INSERT или UPDATE. Генератор обычно применяется для создания уникальных
значений, вставляемых в столбец, который используется как PRIMARY KEY. Для базы
данных может быть определено любое число генераторов, каждый генератор должен имеет
уникальное имя.
Защита (Security)
SQL-защита (securite) управляется на уровне таблицы привилегий доступа - списка
операций, которые разрешены пользователю над данной таблицей или видом. Инструкция
GRANT назначает привилегии доступа к таблице или виду конкретным пользователям или
процедурам. Инструкция REVOKE удаляет предварительно предоставленные привилегии
доступа.
Типы данных
InterBase поддерживает несколько типов данных SQL, но не поддерживает
непосредственно следующие типы данных SQL: DATE, TIME TIMESTAMP. В дополнение к
стандартным типам данных SQL InterBase также поддерживает такой тип данных, как
большие бинарные объекты (BLOB) и массивы типов данных (в том числе для BLOB). Ниже
перечислены типы данных, доступные в SQL инструкциях InterBase
BLOB
Синтаксис: BLOB
Размер: Переменный
Диапазон/Точность: Нет
Описание: Большой двоичный объект. Сохраняет данные большого объема, такие, как
графика, текст и цифровой звук. Основная структура модуля: сегмент. Cубтип данных BLOB
описывается в их контексте.
CHAR
Синтаксис: CHAR(n)
Размер: n символов
Диапазон/Точность: от 1 до 32767 байтов. Размер символа кодировки определяет
максимальное число символов, которые разместятся в 32K.
Описание: Фиксированной длины CHAR или строка текста. Альтернативное ключевое
слово: CHARACTER
DATE
Синтаксис: DATA
Размер: 64 бита
Диапазон/Точность: от 1 янв 100 до 11 янв 5941
Описание: Также включает информацию о времени.
8
DECIMAL
Синтаксис: DECIMAL (precision, scale)
Размер: Переменный
Диапазон/Точность: precision = от 1 до 15. Определяет, что сохраняется, по крайней мере,
precision цифр числа. scale = от 1 до 15. Определяет число знаков после запятой. Должно
быть меньше или равно precision.
Описание: Для примера, DECIMAL(10,3) сохраняет числа точно в следующем формате:
ppppppp.sss
DOUBLE PRECISION
Синтаксис: DOUBLE PRECISION
Размер: 64 бита
Диапазон/Точность: от 1.7E-308 до 1.7E308
Описание: Для научных вычислений: 15 цифр точности.
Обратите внимание: Текущий размер типа DOUBLE зависит от платформы. Большинство
платформ поддерживают размер в 64 бита.
FLOAT
Синтаксис: FLOAT
Размер: 32 бита
Диапазон/Точность: от 3.4E-38 до 3.4E38
Описание: Одиночная точность: 7 цифр точности.
INTEGER
Синтаксис: INTEGER
Размер: 32 бита
Диапазон/Точность: от -2 147 483 648 до 2 147 483 648
Описание: Длинное целое со знаком (long, longword).
NUMERIC
Синтаксис: NUMERIC (precision, scale)
Диапазон/Точность: precision = от 1 до 15. Определяет, что сохраняется, по крайней мере
precision цифр числа. scale = от 1 до 15. Определяет число знаков после запятой. Должно
быть меньше или равно precision.
Описание: Для примера, NUMERIC(10,3) сохраняет числа точно в следующем формате:
ppppppp.sss
9
SMALLINT
Синтаксис: SMALLINT
Размер: 16 бит
Диапазон/Точность: от -32768 до 32767
Описание: Короткое целое со знаком. (shot, word).
VARCHAR
Синтаксис: VARCHAR (n)
Размер: n символов
Диапазон/Точность: от 1 до 32767 байтов. Размер символа кодировки определяет
максимальное число символов, которые разместятся в 32K.
Описание: CHAR переменной длины или строка текста. Альтернативные ключевые слова:
VARYING CHAR, VARYING CHARACTER.
Задание
(файлы с примером выполнения задания находятся в папке /laba6/Example6)
1. Создать новую удаленную базу данных InterBase на сервере 62.76.207.201 в личном
каталоге (в примере - ibcbdb.gdb).
2. Создать в созданной базе данных одну таблицу (в примере - таблица tabl).
3. Таблица должна содержать минимум 5 строковых полей, 2 – цифровых, 1 – для
хранения двоичных файлов (рисунков, фотографий) (в примере используются
следующие поля:
 F1 – типа CHAR,
 F2 - типа CHAR,
 F3 - типа CHAR,
 F4 - типа CHAR,
 F5 – типа CHAR,
 F6 - типа CHAR,
 F7 - типа CHAR,
 F8 – типа CHAR,
 PIC – типа BLOB).
4. Разработать в среде C++Builder 5 программу для доступа к созданной базе данных.
5. Программа должна позволять выполнять следующие функции:
 открывать базу данных, если она уже существует, или создавать новую базу данных,
 просматривать все записи в таблице,
 удалять записи в таблице,
 добавлять запись в таблицу,
 делать выборку с сортировкой записей по заданному полю,
 делать выборку по значению одного из полей таблицы.
10
Порядок выполнения работы:
(порядок выполнения приведен для примера, описание которого находится в папке
laba6/Example6)
1. Запустить C++Builder 5.
2. Создать новый проект.
3. Поместить в форму следующие компоненты из группы Interbase:
 IBDatabase (IBDatabase1),
 IBTable (IBTable1),
 IBSQL (IBSQL1),
 IBTransaction (IBTransaction).
4. Поместить в форму компонент из группы Data Access: DataSource (DataSource1)
5. Поместить в форму компонент из группы Dialogs: OpenPictureDialog
(OpenPictureDialog1)
6. Поместить в форму компоненты из группы Data Controls:
 DBGrid (DBGrid1),
 DBNavigator (DBNavigator1).
 DBImage (DBImage1)
7. Прописать в IBDatabase1 свойство DefaultTransaction = IBTransaction1.
8. Прописать в IBTransaction1 свойство DefaultDatabase = IBDatabase1.
9. Прописать в IBTable1 свойство Database = IBDatabase1.
10. Прописать в IBSQL1 свойство Database = IBDatabase1.
11. Прописать в DataSource1 свойство Dataset = IBTable1.
12. Прописать в DBNavigator1 свойство DataSource = DataSource1.
13. Прописать в DBGrid1 свойство DataSource = DataSource1.
14. Поместить кнопку Button1 и подписать ее «Создать/Открыть таблицу».
15. На событие DBImage1 onDoubleClick создать функцию, в которой должно быть :
if (OpenPictureDialog1->Execute()) {
DBImage1->Picture->LoadFromFile(OpenPictureDialog1->FileName);
}
16. На событие Form1::FormCreate создать функцию, в которой должно быть:
IBDatabase1->DatabaseName="/web_server/Metodika/laba6/Example6/ibcbdb.gdb";
IBDatabase1->Params->Add("user_name=sysdba");
IBDatabase1->Params->Add("password=masterkey");
try {
IBDatabase1->Connected=true;
}
catch (...)
{
IBDatabase1->Params->Clear();
IBDatabase1->Params->Add("user \"sysdba\"");
IBDatabase1->Params->Add("password \"masterkey\"");
IBDatabase1->CreateDatabase();
IBDatabase1->Connected=true;
}
Примечание: n - номер студента в журнале старосты.
17. На событие onClick кнопки Button1 создать функцию, в которой должно быть:
IBTransaction1->Active=true;
11
IBSQL1->SQL->Add("CREATE TABLE tabl (F1 CHAR(280), F2 CHAR(3),F3
CHAR(450), F4 CHAR(8), F5 CHAR(8), F5 CHAR(550),F6 CHAR(1),F7 CHAR(50),
PIC BLOB);");
try {
IBSQL1->Prepare();
IBSQL1->ExecQuery();
}
catch (...)
{
}
IBTransaction1->Commit();
IBTable1->TableName="tabl";
IBTable1->Active=true;
DBImage1->DataField="PIC";
Примечание:
18. Откомпилировать свою программу. Убедиться в ее работоспособности и
продемонстрировать программу преподавателю.
19. Составить отчет по лабораторной работе.
Контрольные вопросы
1. Объекты базы данных InterBase.
2. Типы данных IntarBase.
3. Назначение компонентов для связи с InterBase в С++Builder 5.
Библиографический список
1. Гроф Джеймс Р. SQL: Полное руководство / Джеймс Р. Гроф., П. Н. Вайнберг. – М.: Изд.
группа BHV, 1999. – 608с.
2. Архангельский А. Я. Язык SQL в Delphi / А. Я. Архангельский. – М.: ЗАО "Изд-во
БИНОМ", 2000. – 207 с.
3. Дунаев С. Б. Borland-технологии. SQL-Link. Interbase. Paradox for Windows. Delphi / С. Б.
Дунаев – М.: АО "Диалог-МИФИ", 1996. – 288 с.
4. Архангельский А. Я. Язык SQL в С++Builder 5 / А. Я. Архангельский. – М.: Бином, 2000. –
216 с.
12
ПРОЕКТИРОВАНИЕ ИНФОРМАЦИОННЫХ СИСТЕМ
Методические указания к выполнению практического задания № 6
для студентов специальности 071900 «Информационные системы
и технологии»
Конопелько Геннадий Константинович
Главный редактор Л. А. Суевалова
Редактор Т. Ф. Шейкина
Компьютерная верстка Г. К. Конопелько
Подписано в печать 21.11.03. Формат 60х84 1/16.
Бумага писчая. Гарнитура “Таймс”. Печать офсетная. Усл. печ. л. 0,63.
Тираж 100 экз. Заказ
.
Издательство Хабаровского государственного
технического университета.
680035, Хабаровск, ул. Тихоокеанская, 136.
Отдел оперативной полиграфии издательства
Хабаровского государственного технического
университета.
680035, Хабаровск, ул. Тихоокеанская, 136.
Download