РАЗРАБОТКА БД ДЛЯ АСУ ООО «ТАКСОПАРК «ЭКСПРЕСС-СИТИ» - Студенческий научный форум

V Международная студенческая научная конференция Студенческий научный форум - 2013

РАЗРАБОТКА БД ДЛЯ АСУ ООО «ТАКСОПАРК «ЭКСПРЕСС-СИТИ»

Лаас А.С. 1
1Московский технический университет связи и информатики
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF
В статье кратко изложен результаты курсовой работы по дисциплине «Базы данных» (МТУСИ, ФИ, 4 курс, научн.рук. проф.Воронова Л.И.) связанной с разработкой базы данных для информационной системы ООО «Таксопарк «Экспресс-Сити».

Автоматизация ввода и обработки данных на любом предприятии является неотъемлемой частью его деятельности, поскольку потоки информации огромны и нет возможности обрабатывать их вручную. Век информационных технологий предоставляет возможность быстрого и удобного систематизирования данных с помощью баз данных. Поэтому разработка базы данных является актуальным направлением развития любой компании.

Таксомоторный бизнес - одна из важнейших составляющих транспортной системы России[1]. Создание базы данных в такси позволит повысить качество предоставляемых услуг, а также упростить работу диспетчеров, сократить время для решения вопросов при возникновении ДТП, мотивировать шоферов к безопасному вождению.

Таксопарк ООО "Экспресс-Сити" г. Москвы является одной из ведущих таксомоторных компаний города. Работа этой компании, в частности работа диспетчерской службы не может обходиться без автоматизированной информационной системы и, в частности, без базы данных, являющейся ядром любой подобной системы и позволяющей хранить информацию о сотрудниках и автомобилях компании, а так же производить добавление новых заказов, поступающих от клиентов.

В работе осуществлены проектирование и реализация базы данных для диспетчерской службы таксопарка. Это позволит упростить работу диспетчеров, поскольку при добавлении нового заказа автоматически выбирается автомобиль и водитель, свободный в данный момент, а при сигнале о том, что заказ выполнен после занесения в таблицу длины маршрута, рассчитывается цена поездки и проставляется время ее окончания.

База данных разрабатывалась с использованием СУБД Microsoft SQL Server 2008, основным языком которой является Transact-SQL. Transact-SQL является реализацией стандарта ANSI/ISO по структурированному языку запросов (SQL) с расширениями. Microsoft SQL Server используется для работы с базами данных размером от персональных до крупных баз данных масштаба предприятия; конкурирует с другими СУБД в этом сегменте рынка[2].

Для визуализации созданной базы данных был выбран язык C++ и среда разработки Builder. C++ Builder объединяет в себе комплекс объектных библиотек (STL, VCL, CLX, MFC и др.), компилятор, отладчик, редактор кода и многие другие компоненты. Цикл разработки аналогичен Delphi[3].

Первым этапом при разработке базы данных является анализ предметной области, позволяющий выделить информационные объекты и сформировать требования к БД.

Таксопарк ООО "Экспресс-Сити" работает с 2006 г. Сейчас это одна из крупнейших таксомоторных компаний г. Москвы, предлагающая клиентам широкий набор транспортных услуг и гарантирующая оперативность и качество работы.

Главным лицом компании является ее директор. Ему подчиняются финансовый отдел, коммерческая служба, департамент эксплуатации автомобилей, диспетчерская служба, отдел кадров, служба сервиса, медицинская служба. Каждый отдел имеет свой штат сотрудников.

В распоряжении таксопарка имеется большой автопарк и высококвалифицированные водители с хорошим стажем, заботящиеся о своевременной доставке пассажиров и безопасности в дороге. Все автомобили оснащены самой современной техникой для расчета стоимости поездок и выдачи чеков на оплату. Так же есть возможность оплаты пластиковыми картами. Помимо обычных автомобилей в таксопарке имеются эвакуаторы, грузовые автомобили, микроавтобусы.

За состоянием водителей следят опытные медицинские работники. Содержание автомобилей в чистоте и ремонт осуществляется работниками службы сервиса.

Организационная схема ООО "Экспресс-Сити" представлена на рис.1. Пунктиром выделена область, для которой была разработана база данных. В данном случае ей является диспетчерская служба.

Рис.1. Организационная схема компании ООО «Таксопарк «Экспресс-Сити»

В результате анализа предметной области выделен ряд требований со стороны заказчика: в БД необходимо хранить данные о водителях, автомобилях, марках автомобилей, тарифах на предоставляемые услуги.

На стадии инфологического проектирования создана инфологическая модель предметной области компании, которая приведена на рис.3.

Рис.3. Инфологическая модель предметной области таксопарка ООО "Экспресс-Сити"

Следующим этапом является даталогическое проектирование.

Существует несколько моделей данных, которые определяют соответствующие СУБД: иерархическая, сетевая, реляционная, объектно-ориентированная. При рассмотрении достоинств и недостатков каждой модели была выбрана реляционная модель, в связи с ее хорошей математической проработкой и широкой распространенностью реляционных СУБД.

В этом случае переход к даталогической модели проводится на основе соответсвующего алгоритма, с добавлением в получающиеся отношения первичных и внешних ключей.

Каждой сущности ставим в соответствие отношение реляционной модели данных. Добавим в отношение Водители первичный ключ Код водителя и соотвествуюий ему внешний ключ в отношение Заказы. Аналогично добавляем Код автомобиля, Код тарифа, Номер статуса, Код марки, Номер тарифа.

Сейчас отношения находятся в первой нормальной форме. Для перевода их во вторую нормальную форму необходимо устранить все зависимости непервичных атрибутов от части ключа [4]. Такая зависимость есть в отношении Марки: от Типа марки зависят ее Характеристики. Выделяем эти атрибуты в отношение Тип марки. Поскольку одному типу марки может соотвествовать несколько марок, то связь между Типом марки и Марками будет "один-ко-многим".

Далее раскрываем связи "многие-ко-многим", поскольку реляционные модели данных поддерживают только связи "один-ко-многим". Это делается путем добавления дополнительных связующих отношений. В данном случае такими отношениями является Водитель_Автомобиль, раскрывающий связь между Водителями и Автомобилями, а так же Тариф_Тип марки, раскрывающий связь между Типом марки и Тарифами.

Транзитивных зависимостей не оказалось, поэтому все отношения теперь находятся в третьей нормальной форме. На этом процесс нормализации завершается.

Схема полученной реляционной модели данных представлена на рис.4.

Рис.4. Даталогическая модель данных для БД АСУ ООО "Экспресс-Сити"

Исходя из существующих требований поддержки целостности данных выделим обязательные данные каждого отношения. Для отношения Водители это - Код Водителя, ФИО, Статус; для Автомобилей - Код автомобиля, Код марки, Регистрационный номер, Номер статуса; для Водителей_Автомобилей - Номер записи, Код водителя, Код автомобиля; для Заказов - Номер заказа, ФИО клиента, Код тарифа, Адрес отправления, Адрес прибытия, Номер статуса; Для Марок - Код марки, Наименование, Номе типа; для Тарифов - Код тарифа, Название услуги; для Тарифа_Типа марки - Номер записи, Код тарифа, Номер типа; для Статуса - Номер статуса, Название; для Типа марки - Номер типа, Характеристики.

Целостность отношений не нарушена, поскольку первичный ключ каждого отношения не содержит пустого значения.

Также реализована ссылочная целостность, которая обозначает, что при удалении записи из отношения, имеющего первичный ключ, происходит каскадное удаление записей в связанных с ним отношениях, которые обладают внешним ключом. То же самое относится и к обновлению данных.

При проектировании базы данных были выделены несколько групп пользователей, каждая из которых была наделена своими правами доступа к данным. Это было сделано в целях обеспечения безопасности созданной базы данных. Такими группами пользователей являются диспетчеры, водители и обычные клиенты. Также есть администратор базы данных, который может войти от имени любой из перечисленных групп. Каждая группа пользователей имеет свой логин и пароль, которые вводятся при запуске программы. Информация о доступных логинах и соотвествующих им паролях хранится в дополнительно созданных таблицах в базе данных.

При разработке базы данных были созданы следующие ограничения на ввод информации: статус заказа может быть не больше 3; активность водителей и автомобилей либо 0, либо 1 (что соответствует состояниям "занят" или "свободен"); возраст водителей не менее 18 лет.

В результате реализации базы данных было создано: 11 таблиц, 6 процедур, 3 триггера, 5 представлений, 3 ограничения.

Процедуры осуществляют добавление, редактирование и удаление данных в таблицах. Представления были разработаны для вывода информации из таблиц в виде, приемлемом для пользователей БД (вместо номеров соответствующие названия, удалены ненужные атрибуты ит.д.).

Автоматизация обработки данных осуществляется за счет использования триггеров, скрипты которых приведены в Приложении.

На рис.5 представлена главная форма, которая появляется при входе в программу.

Рис.5. Главная форма программы

При входе от имени диспетчера появляется окно с таблицей заказов, возможностью их редактирования, удаления и добавления новых. Так же предусмотрена сортировка записей по выбранному полю и поиск записи по ключевому слову.

Рис.6. Форма диспетчера

На рис.7 представлена форма добавления новой заявки

Рис.7. Форма для добавления новой заявки.

При входе от имени пользователя у нас есть возможность просмотра содержимого всех таблиц. На рис.8. показан вывод представления на основе таблицы Автомобии и Марки.

Рис.8. Представление содержаще информацию об автомобилях

Также есть возможность добавлять новые данные в таблицы. На рис.9. представлено добавление нового водителя с демонстрацией работы ограничения по возрасту.

Рис.9. Форма для добавления нового водителя

Выводы

В рамках курсовой работы по дисциплине "Базы данных" (МТУСИ, ФИ, 4 курс) была разработана база данных для информационной системы ООО "Таксопарк "Экспресс-Сити". Произведен анализ предметной области, проведено инфологическое и даталогическое моделирование, проведена нормализация. Осуществлена реализация базы данных, разработаны соотвествующие триггеры, процедуры, представления, ограничения. Разработан пользовательский интерфейс и разграничение пользователей в целях обеспечения безопасности.

Список источников литературы

1. Такси-Форум - http://www.taxi-forum.ru/node/14045

2. Microsoft SQL Server - http://ru.wikipedia.org/wiki/Microsoft_SQL_Server

3. C++ Builder - http://ru.wikipedia.org/wiki/C++_Builder

4. Нормальные формы - http://buzness-game.narod.ru/ycheba/baza/metod.html

Приложение

Коды триггеров

1). Код триггера, который осуществляет добавление даты заказа в случае обновления статуса (с "выполняется" на "выполнен")

ALTER TRIGGER [dbo].[check_date]

ON [dbo].[orders]

AFTER INSERT,UPDATE

AS

BEGIN

SET NOCOUNT ON;

IF UPDATE(StatusID) BEGIN

UPDATE orders

SET ActiveTo = GETDATE()

WHERE StatusID = 3;

UPDATE driver

SET Active = 1

FROM driver

LEFT JOIN orders on orders.DriverID = driver.DriverID

WHERE orders.StatusID = 3 AND driver.Active = 0

UPDATE cars

SET Active = 1

FROM cars

LEFT JOIN orders on orders.CarID = cars.CarID

WHERE orders.StatusID = 3 AND cars.Active = 0

END

END

2). Код триггера, который выбирает свободного водителя и автомобиль в соответствии с требованиями: статус водителя - свободен, время последнего заказа минимальное, тип марки автомобиля соответствует данной услуге

ALTER TRIGGER [dbo].[update_orders]

ON [dbo].[orders]

AFTER INSERT

NOT FOR REPLICATION

AS

BEGIN

SET NOCOUNT ON;

DECLARE @DriverID int;

DECLARE @CarsID int;

DECLARE @OrderID int;

DECLARE @ServID int;

SELECT TOP 1 @OrderID = OrdersID,

@ServID = TarifID

FROM orders

ORDER BY OrdersID Desc;

SELECT TOP 1 @DriverID = driver.DriverID,

@CarsID = cars.CarID

FROM driver

LEFT JOIN orders ON orders.DriverID = driver.DriverID

LEFT JOIN drivers_car on drivers_car.DriverID = driver.DriverID

LEFT JOIN cars on cars.CarID = drivers_car.CarID

LEFT JOIN mark on mark.MarkID = cars.MarkID

LEFT JOIN [tarif_mark-type] on [tarif_mark-type].TypeID = mark.TypeID

WHERE driver.Active = 1 AND [tarif_mark-type].TarifID = @ServID AND cars.Active = 1

ORDER by orders.ActiveTo ASC, driver.Age Asc;

IF not @DriverID is Null BEGIN

UPDATE orders

SET DriverID = @DriverID,

CarID = @CarsID,

StatusID = 2

WHERE OrdersID = @OrderID;

UPDATE driver

SET Active = 0

WHERE DriverID = @DriverID;

UPDATE cars

SET Active = 0

WHERE CarID = @CarsID;

END

END

3) Код триггера, котрый вычисляет цену за поездку на основании введенного расстояния и тарифа на выбранную услугу

ALTER TRIGGER [dbo].[calc_price]

ON [dbo].[orders]

AFTER INSERT

AS

BEGIN

DECLARE Price int;

DECLARE @OrderID int;

SELECT TOP 1 @OrderID = OrdersID

FROM orders

ORDER BY OrdersID Desc;

SELECT Price = tarif.Price

FROM orders

LEFT JOIN tarif on orders.TarifID = tarif.TarifID;

UPDATE orders

SET orders.Price = Price * Distance;

END

Просмотров работы: 3298