- •Введение
- •1.Постановка задачи
- •2. Проектирование бд
- •3.1 Описание предметной области
- •2.2 Выделение и нормализация сущностей
- •Логическая схема базы данных
- •Обоснование связей между сущностями
- •3. Функциональная декомпозиция системы
- •Сценарий взаимодействия пользователя с системой
- •Спецификация функций
- •Спецификация процедур
- •Спецификация триггеров
- •Представление
- •5. Тестирование системы
- •5.1 Заполнение бд актуальными данными
- •5.2 Тестирование функций
- •5.3 Тестирование процедур
- •Тестирование триггеров
- •Тестирование представлений
- •Заключение
Тестирование триггеров
Протестируем работу триггера sum_money, срабатывающего после добавления в таблицу ставки, подсчитывает сумму всех ставок.
Чтобы проверить его работу сделаем выборку данных из объекта
@summoney
SQL – код:
select @summoney count;
Общая сумма ставок.
Протестируем работу триггера count_horse, вычисляющего количество лошадей в БД. Триггер срабатывает после добавления в таблицу Horse.
Чтобы проверить его работу сделаем выборку данных из объекта
@counthorse
SQL – код:
select @counthorse count;
Количество лошадей.
Протестируем работу триггера count_klients, вычисляющего количество клиентов.
Триггер срабатывает после добавления в таблицу Klients.
Чтобы проверить его работу сделаем выборку данных из объекта
@countclient
SQL – код:
select @countclient count;
Количество клиентов.
Протестируем работу триггера count_runners, вычисляющего количество наездников. Триггер срабатывает после добавления в таблицу Runner. Чтобы проверить его работу сделаем выборку данных из объекта
@countrunner
SQL – код:
select @countrunner count;
Количество наездников.
Тестирование представлений
Представление хранит виртуальную таблицу info в которой содержатся данные о ставках на ипподроме.
Выполним запрос к представлению
В результате получим подробный список ставок.
Заключение
В ходе работы была разработана структурная база данных, содержащая 5 взаимосвязанных таблиц по информационной области «Ипподром». Так же был реализован функционал, для удобства работы с данными. Функционал включил в себя 6 процедур, 4 триггера, 3 функции, 1 представление и 1 курсор. Была выполнена работа по выделению сущностей, нормализации таблиц. Затем была создана база данных, которая была заполнена данными. Затем был реализован функционал, впоследствии удачно прошедший тестирования. Также были составлены иллюстрации логической и физической моделей предметной области с помощью средств Open Model Sphere.
список литературы
MySQL 5.1 Reference Manual Copyright.
Максим Кузнецов, Игорь Симдянов. Самоучитель MySQL 5.
Кузнецов С. Д. «Основы баз данных», 2-е издание.
Приложение А
Скрипт создания базы данных
SQL – код:
create database ippodrom;
use ippodrom
create table Runner(
ID_runner integer not null primary key unique auto_increment,
Family text not null,
Name text not null,
Father_name text null,
Age_runner integer not null,
Weight integer not null);
create table Horse(
ID_horse integer not null primary key unique auto_increment,
Name_horse text not null,
Type_horse text not null,
Age_horse integer not null);
create table Klients(
ID_client integer not null primary key unique auto_increment,
Family_client text not null,
Name_client text not null,
Father_name_client text null);
create table Table_runs(
ID_run integer not null primary key unique auto_increment,
Type_run text not null,
Place integer not null,
ID_runner integer not null,
Date_run date not null,
ID_horse integer not null,
foreign key (ID_runner) references Runner (ID_runner),
foreign key (ID_horse) references Horse (ID_horse));
create table Price(
ID_price integer not null primary key unique auto_increment,
Price integer not null,
ID_horse integer not null,
ID_client integer not null,
foreign key (ID_horse) references Horse (ID_horse),
-> foreign key (ID_client) references Klients (ID_client));
Query OK, 0 rows affected (0.23 sec)
Приложение Б
ЗАПОЛНЕНИЕ БАЗЫ ДАННЫХ
Заполнение таблицы Runner
insert into Runner values
(1,'Ivanov','Ivan','Ivanovich','30','75'),
(2,'Petrov','Petr','Petrovic','25','65'),
(3,'Semenov','Semen','Semenovic','32','80'),
(4,'Peter','Vagner','','40','78'),
(5,'Ioghann','Shpitz','','22','72'),
(6,'Ditrich','Valtz','','27','74'),
(7,'Michael','Paterson','','33','68'),
(8,'Donatan','McCinley','','36','82'),
(9,'George','Jourley','','41','73'),
(10,'Kornelio','Spiterri','','31','77');
Заполнение таблицы Horse
insert into Horse values
(1,'Belka','White',7),
(2,'Daemon','Black',8),
(3,'Kelly','Brown','9'),
(4,'Strelka','White',7),
(5,'Fire','Brown',7),
(6,'Carol','Black',9),
(7,'Snezhok','White',8),
(8,'Ghost','Brown',6),
(9,'Nostra','Black',7),
(10,'Gary','Yellow',8);
Заполнение таблицы Klients
insert into Klients values
(1,'Figner','Nick',''),
(2,'Polskich','Garry',''),
(3,'Sydorov','Andrey','Alexeevich'),
(4,'Volkov','Vladimir','Alexandrovich'),
(5,'Smertyn','Venyamin','Ivanovich'),
(6,'Zendler','Ghans',''),
(7,'Fatler','Gerard',''),
(8,'Delly','Carl',''),
(9,'Tyler','James',''),
(10,'Adams','Willham','');
Заполнение таблицы Table_runs
insert into Table_runs values
(1,'Sprint',5,3,'12.02.13',3,'11:00:00'),
(2,'Sprint',4,2,'12.02.13',2,'11:00:00'),
(3,'Sprint',3,5,'12.02.13',4,'11:00:00'),
(4,'Sprint',2,4,'12.02.13',5,'11:00:00'),
(5,'Sprint',1,1,'12.02.13',1,'11:00:00'),
(6,'Open Stakes',5,9,'12.02.15',7,'13:00:00'),
(7,'Open Stakes',4,7,'12.02.15',9,'13:00:00'),
(8,'Open Stakes',3,8,'12.02.15',8,'13:00:00'),
(9,'Open Stakes',2,10,'12.02.15',10,'13:00:00'),
(10,'Open Stakes',1,6,'12.02.15',6,'13:00:00');
Query OK, 10 rows affected (0.17 sec)
Records: 10 Duplicates: 0 Warnings: 0
Заполнение таблицы Price
insert into price (Price,ID_horse,ID_client) values
(3000,1,1),
(5000,2,2),
(4000,3,4),
(7000,4,3),
(6000,5,5),
(4000,6,6),
(3500,7,8),
(3500,8,7),
(6500,9,9),
(9500,10,10);
Размещено на Allbest.ru
