- •Федеральное агенство связи государственное образовательное учреждение
- •Задание на проектирование
- •1.1 Описание предметной области
- •2. Модели баз данных
- •2.1 Логическая модель базы данных
- •2.2 Доказательства решенности поставленных задач
- •2.3 Нормализация
- •2.4 Физическая модель базы данных
- •2.5 Отчет об ошибках в Validator
- •2.6 Процесс прямого проектирования
- •3. Тексты и результаты выполнения запросов
- •3.1 Проверка базы данных в Oracle
- •3.2 Sql Запросы
- •3.3 Обратное проектирование
- •Заключение
3.2 Sql Запросы
С помощью средств запросов SQL строим 10 вариантов запросов. Проверяем работоспособность написанных запросов.
Запрос для определения работы водителей (см рис 3.2.1).
select Расписание.ном_расп, Расписание.таб_ном, Расписание.ном_маш, Заказы.сроки
from РАСПИСАНИЕ,ЗАКАЗЫ
where Расписание.ном_зак=Заказы.ном_зак;

Рисунок 3.2.1 SQL Запрос
Запрос для вывода товарных накладных на заданный рейс (см рис 3.2.2).
select ном_рейса,ном_наклад
from РЕЙС
where НОМ_РЕЙСА=333
4х
Рисунок 3.2.2 SQL Запрос
Запрос для формирования списка заказов (см рис 3.2.3)
select * from ЗАКАЗЫ;

Рисунок 3.2.3 SQL Запрос
Запрос для определения расписания рейсов (см рис 3.2.4).
select Расписание.ном_расп, Расписание.ном_рейса, Расписание.ном_маш, Заказы.сроки
from РАСПИСАНИЕ,ЗАКАЗЫ
where Расписание.ном_зак=Заказы.ном_зак;

Рисунок 3.3.4 SQL Запрос
Для определения списка рейсов, выполняющих несколько заказов (см рис 3.2.5).
select count(РЕЙ_ЗАК.ном_рейса) as КОЛИЧ_ЗАКАЗОВ, РЕЙС.ном_рейса
from РЕЙС
left join РЕЙ_ЗАК on РЕЙС.ном_рейса=РЕЙ_ЗАК.ном_рейса
group by РЕЙС.ном_рейса
having count(РЕЙ_ЗАК.ном_рейса)>1
![]()
Рисунок 3.2.5 SQL Запрос
Запрос для определения списка рейсов. Выполняющих максимальное количество заказов (см рис 3.2.6).
select count(РЕЙ_ЗАК.ном_рейса) as КОЛИЧ_ЗАКАЗОВ, РЕЙС.ном_рейса
from РЕЙС
left join РЕЙ_ЗАК on РЕЙС.ном_рейса=РЕЙ_ЗАК.ном_рейса
group by РЕЙС.ном_рейса
having count(РЕЙ_ЗАК.ном_рейса)>=(select max(A) from(select ном_рейса, count(ном_зак) as A from РЕЙ_ЗАК group by ном_рейса))
![]()
Рисунок 3.2.6 SQL Запрос
Для определения списка рейсов с несколькими водителями (см рис 3.2.7).
select count(ТР_С_В_РЕЙ.таб_ном) as КОЛИЧ_ВОДИТЕЛЕЙ, РЕЙС.ном_рейса
from РЕЙС
left join ТР_С_В_РЕЙ on ТР_С_В_РЕЙ.ном_рейса=РЕЙС.ном_рейса
group by РЕЙС.ном_рейса
having count(ТР_С_В_РЕЙ.таб_ном)>1
![]()
Рисунок 3.2.7 SQL Запрос
Для определения списка заказов, выполняемых на нескольких рейсах (см рис 3.2.8).
select count(РЕЙ_ЗАК.ном_рейса) as КОЛИЧ_РЕЙСОВ, РЕЙ_ЗАК.ном_зак
from РЕЙ_ЗАК
group by РЕЙ_ЗАК.ном_зак
having count(РЕЙ_ЗАК.ном_рейса)>1
![]()
Рисунок 3.2.8 SQL Запрос
Для определения списка обслуживающего персонала (см рис 3.2.9).
select ОБ_ПЕРСОНАЛ.таб_ном, ОБ_ПЕРСОНАЛ.фио, ОБ_ПЕРСОНАЛ.категория, ПЕРСОНАЛ.должность
from ОБ_ПЕРСОНАЛ, ПЕРСОНАЛ
where ОБ_ПЕРСОНАЛ.таб_ном=ПЕРСОНАЛ.таб_ном;

Рисунок 3.2.9 SQL Запрос
Для определения списка транспортных средств, не закрепленных за водителем (см. рис 3.2.10)
select ном_маш, гос_ном, название
from ТР_СР
where состояние_тр='не_раб';
![]()
Рисунок 3.2.10 SQL Запрос
3.3 Обратное проектирование
После выполнения запросов и проверки правильности прямого проектирования было успешно осуществлено обратное проектирование БД. Обратное проектирование прошло безошибочно (см. рисунок 3.3.1).

Рисунок 3.3.1 – Модель, полученная путем обратного проектирования
Заключение
В данной курсовой работе была спроектирована информационная система транспортной компании, которая занимается перевозками внутри страны и имеет контакты за рубежом.
Для этого была создана логическая модель базы данных, которая предусматривает значения по умолчанию. Далее была осуществлена проверка модели средствами Validator, были устранены ошибки. Проведено прямое проектирование. Далее была осуществлена проверка базы данных в Oracle на наличие ключевых полей, значений по умолчанию, условий проверки вводимых пользователем значений, связей между таблицами, работу запросов. Для проверки работоспособности базы данных были внесены в таблицы базы данных записи. С помощью средств запросов SQL были выполнены запросы. Далее было проведено обратное проектирование базы данных из Oracle.
