Смекни!
smekni.com

Методические указания к курсовому проектированию по курсу базы данных для студентов дневной и заочной форм обучения специальностей (стр. 10 из 14)

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

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

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

Как же внедрить электронные технологии в такой сложный механизм учета маршрутов и продажи билетов? Ответом на этот вопрос служит представленный проект. Подобный проект можно предложить для использования кассирами на железнодорожных станциях, для улучшения обслуживания пассажиров.

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

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

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

2 Разработка структуры базы данных

2.1 Инфологическая модель данных

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

Инфологическая модель данных приведена на рис.2.1 в виде ER-диаграммы.

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

Сущность «Дата отправления поезда» включает в себя набор дат и идентификаторов для каждой даты. Она необходима, так как каждый поезд может иметь множество различных дат отправления.

Сущность «Номер билета» создана как уникальный идентификатор для сущности «Билет».

Сущность «Пассажир» связана отношением «Имеет» с сущностью «Льготы (процент скидки)». Она характеризуется характеристиками каждого пассажира и видом льготы. У одного пассажира может быть только один вид льготы.

Сущность «Льготы (процент скидки)» характеризуется видом льготы и идентификатором. Необходима для создания определенного набора видов льгот.

Сущность «Станция» содержит в себе информацию по каждой станции. Связана отношением «Находится на» с сущностью «Расстоянии». Также она связана отношением «Следует через» с сущностью «Номер поезда». Определенные поезда следуют через определенные станции.

Сущность «Расстоянии» характеризуется расстоянием от станции, на которой находится данная касса железнодорожных билетов, до данной станции и идентификатором. Одной станции соответствует одно значение расстояния.

Рис.2.1 ER-диаграмма

Сущность «Номер поезда» содержит характеристики каждого поезда. Связана отношением «Включает в себя» с сущностью «Количество вагонов данного типа».

Сущность «Тип вагона» содержит набор существующих типов вагонов и идентификаторов для каждого типа вагона. Она связана отношением «Включает в себя» с сущностью «Количество вагонов данного типа». Также она содержит характеристики каждого типа вагона.

Сущность «Количество вагонов данного типа» характеризуется количеством вагонов данного типа для данного номера поезда. Каждый номер поезда может иметь любое количество вагонов любого типа.

2.2 Датологическая модель данных

В созданной базе данных (БД) вся информация хранится в 10 таблицах, и 2 таблицы являются вспомогательными для промежуточных вычислений. Схема данных представлена на рис.2.2.

Рис 2.2 Схема данных

В таблице «Скидка» хранится размер льготы «Льгота» числового типа и ключевое поле «Код» типа счетчик, являющееся идентификатором льготы.

В таблице «Пассажир» хранится ФИО каждого пассажира в поле «ФИО» текстового типа, конкретная скидка для каждого пассажира в поле со списком «Скидка». Также хранится идентификатор каждого пассажира в поле «Код» типа счетчик. Поле «Код» является ключевым.

В таблице «Дата отправления» хранятся различные даты отправления поездов в поле «Дата» типа дата и идентификаторы для каждой даты в поле «Код» типа счетчик. Поле «Код» является ключевым.

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

В таблице «Количество вагонов» хранится количество вагонов данного типа для данного номера поезда. Количество вагонов хранится в поле «Количество вагонов» числового типа. Данный тип вагонов хранится в поле со списком «Тип вагона», данный номер поезда в поле со списком «Номер поезда». Ключевое поле состоит из 2 полей: «Номер поезда» и «Тип вагона». Составное ключевое поле необходимо, чтобы определенному типу вагонов и определенному номеру поезда соответствовало только одно количество вагонов.

В таблице «Вид поезда» хранится информация о видах поездов. В поле «Вид поезда» текстового типа хранится название вида поезда. В поле «Стоимость км» денежного типа хранится стоимость одного километра пути на данном виде поезда. Идентификатором вида поезда и ключевым полем является поле «Код» типа счетчик.

В таблице «Номер поезда» хранится номер поезда в поле «Номер поезда» числового типа, вид поезда в поле со списком «Вид поезда» и ключевое поле «Код» типа счетчик, являющееся идентификатором для данного номера поезда.

В таблице «Следует через» хранится список станций для каждого номера поезда, через которые этот поезд проезжает. Номер поезда хранится в поле со списком «Номер поезда», а станции в поле со списком «Станция». Ключевое поле состоит из полей «Номер поезда» и «Станция», что исключает повторение строк в таблице.

В таблице «Станция» хранится информация по каждой станции. В поле «Станция» текстового типа хранится название стации, в поле «Расстояние» числового типа расстояние от станции, на которой находится данная касса железнодорожных билетов, до данной станции. Ключевое поле «Код» типа счетчик является идентификатором для данной станции.

В таблице «Купил билет» хранится информация о каждом проданном билете. Ключевое поле «Номер» текстового типа содержит номер проданного билета. В поле со списком «Дата» хранится дата отправления поезда. В поле со списком «Номер поезда» хранится номер поезда, на который продан билет. В поле со списком «Тип вагона» хранится тип вагона, в который продан билет. В поле со списком «Станция» хранится название станции, до которой следует пассажир. В поле со списком «Пассажир» хранится пассажир, на которого оформлен билет. В поле «Цена» денежного типа хранится подсчитанная стоимость проезда для билета с данными параметрами.