Контрольная работа: Особенности проектирования баз данных
as
begin
for
select distinct publishers.name, count(publishers.id_publishers), AVG(books.tiraz)
from books inner join publishers on books.id_publishers = publishers.id_publishers
group by publishers.name
into: publishers_name, : count_, : avg_tiraz
dosuspend;
end
Выходными параметрами процедуры являются:
· publishers_namevarchar(20) charactersetwin1251 – строковой параметр для значений имени издательства;
· avg_tirazinteger – параметр для среднего значения тиража книги каждой группы.
· count_ integer – параметр для выдачи значения количества строк каждой группы.
В данной процедуре осуществляется выборка значений поля «PUBLISHERS.NAME», количества возвращаемых строк и среднего значения по полю «BOOKS.TIRAZ» для каждого значения поля «PUBLISHERS.NAME».
Теперь структура базы данных готова. Заполним таблицы некоторыми записями:
Таблица «Издательства» (Publishers)
ID_Publishers | Name | City |
1 | Питер | С.- Петербург |
2 | ДиаСофт | Киев |
3 | КОРОНА принт | С.- Петербург |
4 | Финансы и статистика | Москва |
Таблица «Читатели» (Readers)
ID _ abonent | FIO | Telephone | Address |
1 | Иванов Вадим | 12345678 | Москва ул. 1 д.1 кв. 1 |
2 | Петров Борис | 11111111 | Орел ул. 1 д.1 кв. 1 |
3 | Сидоров Иван | 22222222 | Курск ул. 1 д.1 кв. 1 |
4 | Кузнецов Артем | 12121212 | Воронеж ул.1 д.1 кв.1 |
Таблица «Книги» (Books)
ID_ Books | Name | ID_ Publishers | K_ pages | Cover | Tiraz | ID_ abonent | Date_issue |
1 | Эффективная работа с СУБД | 1 | 704 | твёрдый | 6000 | 1 | 01.01.2009 |
2 | Delphi. Разработка баз данных | 1 | 477 | твёрдый | 5000 | 1 | 01.01.2009 |
3 | Базы данных и приложения | 2 | 592 | твёрдый | 7000 | 2 | 11.01.2009 |
4 | Базы данных | 2 | 416 | твёрдый | 5000 | NULL | NULL |
Создание клиентского приложения баз данных
Создадим клиентское приложение в ИСР Delphi, используя технологию доступа к данным InterBase eXpress ( IBX).
Выберем File/New/Application (Файл/Новое/Приложение), затем добавим модуль данных для компонентов доступа к данным – File/New/DataModule (Файл/Новый/Модуль данных). Компоненты доступа к данным расположены на страницеDataAccessПалитры компонентов. Компоненты отображения данных расположены на страницеDataControls Палитры компонентов. Компоненты, используемые в технологии InterBaseeXpress распологаются на странице InterBase, а компоненты для создания отчётов – QReport.
Поместим на модуль данных компонент TIBDatabase. Укажем в свойстве DatabaseName полный путь (включая имя сервера) к выбранному файлу БД – «C:\01\LIBRARY.FDB».
Поместим следующие компоненты на форму модуля данных:
· компонент IBTransaction
· три IBDataSet,
· три DataSource
Подключимся к базе данных. Выделим компонент TIBDatabase и выберем из контекстного меню Database Editor.… В этом окне укажем User Name = SYSDBA, Character Set = WIN1251. Затем установим свойство Connected компонента IBDatabase1 равным True и свойство DefaultTransaction компонента IBDatabase1 равным IBTransaction1.
Зададим управление транзакциями. Сделаем активным компонент IBTransaction1, для чего его свойству Active придадим значение True. Вызовем редактор TransactionEditor..., и в появившемся диалоговом окне выберем уровень изоляции транзакций – ReadCommitted.
Установим значения свойств:
· DefaultAction – TACommitRetaining