- •Базы данных
- •Содержание
- •Введение
- •1. Создание приложений с использованием технологии bde
- •1.1. Лабораторная работа № 1: создание базы данных
- •1.1.1. Создание таблиц dBase IV
- •1.1.2. Создание индексов
- •1.1.3. Создание таблиц Paradox 7
- •1.1.4. Задание свойств таблицы Paradox 7
- •Задание на лабораторную работу № 1
- •1.2. Лабораторная работа № 2: установление связей между таблицами в многотабличной базе данных
- •1.2.1. Создание алиаса
- •1.2.2. Связывание таблиц
- •Задание на лабораторную работу № 2
- •1.3. Лабораторная работа № 3: работа с полями и компонентом dbGrid
- •1.3.1. Использование объектов-полей
- •1.3.2. Обращение к значению поля
- •1.3.3. События объекта-поля
- •1 Рис. 10. Пример использования события OnCellClick .3.4. События сетки dbGrid
- •1.3.5. Создание объектов-столбцов в dbGrid
- •1.3.6. Формирование списка возможных значений столбца
- •Задание на лабораторную работу № 3:
- •1.4. Лабораторная работа № 4: работа с наборами данных (компонент Table)
- •1.4.1. Открытие и закрытие набора данных
- •1.4.2. Доступ к записям
- •1.4.3. Навигация по набору данных
- •1.4.4. Поиск записей в наборах данных
- •1.4.5. Реализация каскадных изменений
- •1.4.6. Пример выполнения лабораторной работы
- •Задание на лабораторную работу № 4
- •1.5. Лабораторная работа № 5: работа с отчетами
- •1.5.1. Создание простейшего отчета
- •1.5.2. Создание отчета для связанных наборов данных
- •1.5.3. Использование выражений (компонент qrExpr)
- •1.5.4. Группирование данных в отчете
- •Задание на лабораторную работу № 5:
- •1.6. Лабораторная работа № 6: sql-запросы (компонент Query)
- •Задание на лабораторную работу № 6
- •2. Создание приложений, работающих с базами данных interbase
- •2.1. Лабораторная работа № 1: создание схемы базы данных
- •2.2. Лабораторная работа № 2: доступ к базе данных InterBase c использованием dbExpress
- •2.3. Лабораторная работа № 3: транзакции
- •2.4. Лабораторная работа № 4: отображение данных запроса
- •2.5. Лабораторная работа № 5: вычисляемые, агрегатные и подстановочные поля
- •2.5.1. Вычисляемые поля
- •2.5.2. Агрегатные поля
- •2.5.3. Подстановочные поля
- •2.6. Лабораторная работа № 6: связь Master-Detail
- •2.7. Лабораторная работа № 7: локальная репликация данных
- •Приложение 1 варианты заданий к лабораторным работам Вариант 1. Прием заказов
- •Вариант 2. Поставки товаров
- •Вариант 3. Исполнители
- •Вариант 4. Картинная галерея
- •Вариант 5. Порт
- •Вариант 6. Студенты
- •Вариант 7. Строительная компания
- •Вариант 8. Автосалон
- •Вариант 9. Аэропорт
- •Вариант 10. Диагностический центр
- •Вариант 11. Реклама
- •Вариант 12. Быстрая пицца
- •Вариант 13. Клуб собаководов
- •Вариант 14. Грузоперевозки
- •Вариант 15. Аптека
- •Вариант 16. Автовокзал
- •Вариант 17. Общественная организация
- •Вариант 18. Учет потребления газа
- •Приложение 2 порядок выполнения лабораторных работ
- •Библиографический список
Задание на лабораторную работу № 6
Разработать приложение для выполнения SQL-запросов, описанных в индивидуальном задании. Все запросы должны быть параметризированными.
2. Создание приложений, работающих с базами данных interbase
2.1. Лабораторная работа № 1: создание схемы базы данных
Задание: Для своего варианта индивидуального задания создать схему базы данных, используя средства InterBase. Реализовать для каждой таблицы автогенерацию первичных ключей. Задать ссылочную целостность, в сложных случаях реализовать с помощью триггеров. Определить ограничения (Constraints) для всех таблиц.
Выполнение.
Откройте приложение IBConsole из пакета InterBase: Пуск | Программы | InterBase | IBConsole. Выберите пункт меню Tools/Interactive SQL и в верхней части появившегося окна введите команду:
CREATE DATABASE "D:\STUDENTS\V-312\TEST.GDB" USER "SYSDBA" PASSWORD "masterkey"
Первый параметр команды определяет путь к файлу D:\STUDENTS\V-312\ и имя файла новой БД TEST.GDB (при указании убедитесь, что путь действительно существует). Два следующих параметра — это стандартные имя и пароль системного администратора. Чтобы выполнить команду, нажмите Ctrl-Enter.
Далее вернитесь в главное окно IBConsole. Раскройте пункт Local Server списка в левой части окна и на запрос имени пользователя и пароля введите, соответственно, SYSDBA и masterkey. В меню Database выберите Register и зарегистрируйте вашу БД. Для этого укажите файл БД и имя псевдонима (Alias Name). После этого все объекты новой БД можно найти, раскрыв элемент списка, название которого соответствует введенному псевдониму.
Теперь можно продолжить создание БД. Откройте уже знакомое окно ввода SQL-запросов (Tools/Interactive SQL) и для создания таблицы выполните код:
CREATE TABLE FIRSTABLE
(
ID INTEGER NOT NULL,
FNAME VARCHAR(15),
MNAME VARCHAR(15),
LNAME VARCHAR(15),
ADDR VARCHAR(30),
PHONE VARCHAR(15),
BIRTH TIMESTAMP,
PRIMARY KEY (ID)
)
Здесь FIRSTABLE — имя новой таблицы, а в скобках перечислены определения ее полей. В последнюю очередь указываются ограничения (Constraints). В данном случае с помощью оператора PRIMARY KEY определен первичный ключ таблицы: это поле ID.
Для создания автоинкрементных полей в InterBase используют элементы схемы, называемые генераторами (аналог объектов Sequence в СУБД Oracle). Генератор создается следующей командой:
CREATE GENERATOR GEN_CLIENT;
Ниже представлен пример реализации автоинкрементного поля ID_CLIENT из таблицы клиентов. Следующий код создает триггер, который будет срабатывать до вставки новой записи в таблицу и обеспечивать последовательное увеличение значения поля ID_CLIENT при вставке записей.
SET TERM !!;
CREATE TRIGGER INC_CLIENT FOR CLIENTS
ACTIVE BEFORE INSERT POSITION 0
as
begin
new.ID_CLIENT = gen_id(GEN_CLIENT,1);
end !!
Рассмотрим этот код.
Команда SET TERM определяет символы терминатора, который нужен для указания окончания кода триггера и используется только в реализации SQL InterBase. Команда CREATE TRIGGER имеет следующие параметры:
имя триггера (INC_CLIENT);
имя таблицы, для которой создается триггер (CLIENTS);
параметр ACTIVE (необязателен);
параметр BEFORE или AFTER указывает, что триггер сработает до или после связанной с ним операции;
параметр INSERT, DELETE или UPDATE определяет производимую над таблицей операцию, с которой связан триггер (соответственно, вставка, удаление или изменение данных);
POSITION 0 — указывает, что триггер сработает первым среди всех триггеров, связанных с данной операцией.
Внутри составного оператора begin … end находится код операций, производимых триггером. В нашем случае новое значение поля ID_CLIENT создается генератором GEN_CLIENT. Эта процедура автоматически увеличивает значение генератора с шагом, в нашем примере равным 1.
