Проектирование базы данных "Почтовое отделение"
Создание базы данных почтового отделения, которая включает в себя информацию о подписке клиентов на различные издания, о доставляемых в почтовое отделение изданиях. Построение диаграмм ER-типа с учетом сущностей и связей. Описание интерфейса пользователя.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 03.03.2015 |
Размер файла | 9,2 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
Размещено на http://www.allbest.ru
Введение
В настоящее время почтовые отделения предоставляют населению следующие услуги:
Почтовые услуги
В соответствии с Федеральным Законом «О почтовой связи» тарифы на оказание универсальных услуг почтовой связи регулируются государством. Данный раздел будет незаменим, если Вы собираетесь отправить письмо, бандероль или посылку друзьям, родственникам. В данный раздел входят следующие услуги:
Письменная корреспонденция
Отправления первого класса
Express Mail Service (EMS)
Бандероли и посылки
Финансовые услуги
Вместе с оказанием почтовых услуг Почта России развивает финансовые сервисы для предоставления, как населению, так и корпоративным клиентам более широких возможностей в почтовых отделениях по всей стране. К данному разделу относятся следующие услуги:
Денежные переводы "КиберДеньги" (по России)
Денежные переводы "КиберДеньги" (в странах СНГ, Балтии и странах Дальнего зарубежья)
Срочные денежные переводы «Форсаж»
Денежные переводы Western Union (Страны Дальнего зарубежья)
Погашение кредитов на почте
Кредит почтовым переводом
Выплата пенсий и пособий
Прием коммунальных платежей
Прием платежей за услуги связи, интернет и телевидение
Услуги для населения
Распространение печати по подписке
КиберПочта@
КиберПресса@
Реализация лотерей
Услуги телефонной связи
Прием миграционных уведомлений
Продажа билетов
Из списка услуг видно, что распространение печати по подписке является лишь частью предоставляемых современным почтовым отделением услуг. При реализации данного спектра услуг почтовое отделение сталкивается с большими объемами информации. Выполнение данных задач качественно и своевременно, не применяя современные компьютерные средства, очень сложно.
Цель моей курсовой работы - создание базы данных почтового отделения, которая будет включать в себя информацию о подписке клиентов на различные издания, информацию о доставляемых в почтовое отделение изданиях, а также о почтальонах, работающих в почтовом отделении. Использование данной базы позволит существенно облегчит поиск информации о подписчиках, почтальонах их обслуживающих, о количестве экземпляров изданий, необходимых почтовому отделению.
1. Описание предметной области
Распространение печати по подписке является одной из задач почтового отделения связи.
В базе данных почтового отделения должна храниться информация о клиентах, об изданиях, на которые ведется подписка, о почтальонах, работающих в почтовом отделении, а также должна предоставляться возможность просмотра различной информации, интересующей как клиентов почтового отделения, так и его сотрудников.
Информация о клиентах включает в себя: паспортные данные клиента, ФИО, адрес, телефон, а также информация о том, нужна ли клиенту доставка изданий. Район, обслуживаемый почтовым отделением, разбивается на участки, каждый из участков обслуживает один почтальон, поэтому также необходимо хранить информацию о том, к какому участку относится клиент, а также иметь возможность посмотреть, какой почтальон обслуживает данного клиента. Необходимо иметь возможность просмотра изданий, которые выписывает данный клиент, а также учесть возможность продления подписки после окончания старой.
Информация об изданиях включает в себя: индекс издания, название, а также стоимость подписки в зависимости от срока подписки. Иногда необходимо получать информацию о количестве изданий, поступающих в почтовое отделение по подписке, а также распределение количества выписываемых изданий по участкам или по домам. Эта информация также должна представляться в базе данных.
Информация о почтальонах включает в себя: табельный номер почтальона, а также личные данные почтальона (ФИО, адрес, телефон, дату рождения), а также информацию об обслуживаемых почтальоном участках. Почтальону необходима информация о количестве доставляемых им изданий всего по его участку (или участкам), а также по отдельным домам. Также необходимо просматривать информацию об общей загруженности почтальонов, чтобы при необходимости менять закрепленные за ними участки, не допуская серьезных различий в загруженности сотрудников.
2. Проектирование базы данных «Почтовое отделение»
Процесс проектирования базы данных является итерационным, т.е. допускающим возврат к предыдущим этапам для пересмотра ранее принятых решений, и включает следующие этапы:
выявление сущностей и связей между ними;
построение диаграмм ER-типа с учетом всех сущностей и их связей;
формирование набора предварительных отношений с указанием предполагаемого первичного ключа для каждого отношения;
добавление неключевых атрибутов в отношения;
приведение предварительных отношений к БКНФ с помощью метода нормальных форм;
пересмотр ER-диаграмм в следующих случаях:
некоторые отношения не приводятся к БКНФ;
некоторым атрибутам не находится логически-обоснованных мест в предварительных отношениях.
После преобразования ER-диаграмм осуществляется повторное выполнение предыдущих этапов проектирования.
2.1 Первый этап проектирования
При разработке концептуальной модели, прежде всего, следует определить сущности. С этой целью нужно сделать следующее:
необходимо понять, какая информация должна храниться и обрабатываться и можно ли это определить как сущность;
присвоить этой сущности имя;
выявить атрибуты сущности и присвоить им имя;
определить уникальный идентификатор сущности.
В данной базе данных нас будет интересовать информация о следующих объектах реального мира:
клиенты почтового отделения - причем под клиентами здесь понимается те люди, которые услугами почтового отделения, связанными с подпиской на издания. Другие клиенты нас не интересуют
сотрудники почтового отделения - а именно, почтальоны
издания - каталог изданий, на которые возможна подписка в данном почтовом отделении
Определим атрибуты сущностей:
Клиенты - о клиентах нас будет интересовать следующая информация
паспортные данные
ФИО
адрес, на который осуществляется доставка
телефон
необходимость доставки
номер участка - информация о номере участка необходима для распределения адресов обслуживания между почтальонами
индексы выписываемых изданий
названия изданий
даты начала и окончания подписки
Иная информация о клиентах в рамках данной базы данных нас не интересует.
Информация об изданиях
Индекс издания
Название
Стоимость подписки на различные периоды
Сотрудники
Табельный номер
ФИО
Телефон
Обслуживаемые участки
Связь сущности - зависимость между атрибутами этих сущностей, название связи обычно представляется глаголами.
Степень связи характеризует связь между сущностями, которая может быть один к одному (1:1), один ко многим (1:М), много к одному (М:1), много ко многим (М:М).. Степень означается символами на линии связи.
Класс принадлежности может быть обязательным или необязательным. Класс принадлежности является обязательным в том случае, если все экземпляры этой сущности обязательно участвуют в этой связи. В противном случае класс принадлежности является необязательным
Между выделенными сущностями существуют следующие связи:
Клиенты выписывают издания
Клиенты обслуживаются почтальонами
Второй этап проектирования
2.2 Построение диаграмм ER-типа с учетом всех сущностей и их связей
Клиенты выписывают издания. Один клиент может выписывать множество изданий, и одно издание может выписываться множеством клиентов. Поэтому связь М:М. Некоторые клиенты могу вообще не выписывать издания, некоторые издания могут не выписываться клиентами. Поэтому класс принадлежности - необязательный. На рисунке 1 представлена связь «Клиенты выписывают издания»
Рисунок 1 - Связь «Клиенты выписывают издания»
Клиенты обслуживаются почтальонами. Один клиент обслуживается одним почтальоном. Один почтальон обслуживает множество клиентов. Значит связь М:1. Почтальон необязательно обслуживает клиентов (может возникнуть такая ситуация, что в определенный момент у почтальона не останется клиентов), а клиенты необязательно обслуживаются почтальонами. Поэтому класс принадлежности - необязательный. На рисунке 2 представлена связь «Клиенты обслуживаются почтальонами»
Рисунок 2 - Связь «Клиенты обслуживаются почтальонами»
Третий этап проектирования
На основе анализа построенных связей и правил формирования отношений построим предварительные отношения.
Правила формирования отношений:
Если степень связи 1:1 и класс принадлежности обеих сущностей обязательны, то формируется одно отношение. Первичным ключом этого отношения может быть ключ любой сущности.
Если степень связи 1:1 и класс принадлежности первой сущности обязателен, а другой нет, то под каждую из сущностей выделяется по отношению с первичными ключами, являющимся ключами соответствующих сущностей. Далее к отношению, сущность которого имеет обязательный класс принадлежности, добавляется в качестве атрибута ключ сущности с необязательным классом принадлежности.
Если степень связи 1:1 и класс принадлежности обеих сущностей необязателен, то нужно использовать три отношения: два отношения соответствуют связываемым сущностям, ключи которых являются первичными в этих отношениях; третье отношение является связным между первыми двумя, поэтому его ключ объединяет ключевые атрибуты связываемых отношений.
Если степень связи между сущностями 1:М или М:1 и класс принадлежности М-связной обязательный, то достаточно формирования двух отношений, по одному на каждую из сущностей. Каждое отношение будет иметь свои первичные ключи, и, кроме того, ключ 1-связной сущности добавляется в отношение М-связной сущности.
Если степень связи 1:М или М:1 и класс принадлежности М-связной сущности является необязательным, то необходимо формирование трех отношений: два отношения соответствуют связываемым сущностям, ключи которых являются первичными в этих отношениях; третье отношение является связным и его ключ объединяет ключи первых двух отношений.
Если степень связи М:М, то независимо от класса принадлежности сущностей формируется три отношения: два отношения соответствуют связываемым сущностям; а третье является связным и объединяет ключи первых двух отношений.
Связь «Выписывают» удовлетворяет условиям правила №6, в соответствии с которым получаем 3 отношения:
Клиенты (паспортные данные, ФИО клиента, адрес, телефон, информация о доставке);
Издания (Индекс, название, стоимость подписки);
Подписка (Номер подписки, паспортные данные клиента, индекс издания, дата начала подписки, дата окончания подписки).
Связь «Обслуживаются» удовлетворяет условиям правила №5, в соответствии с которым получаем 2 отношения:
Клиенты (паспортные данные, ФИО клиента, адрес, номер участка, телефон, информация о доставке);
Почтальоны (Табельный номер, ФИО, адрес, дата рождения, обслуживаемые участки).
Четвертый этап проектирования
Добавим неключевые атрибуты к полученным отношениям, и тогда они примут следующий вид:
Клиенты (паспортные данные, ФИО клиента, адрес, номер участка, телефон, информация о доставке).
Подписка (Номер подписки, паспортные данные клиента, индекс издания, дата начала подписки, дата окончания подписки)
Издания (Индекс, название, стоимость подписки).
Почтальоны (Табельный номер, ФИО, адрес, дата рождения, обслуживаемые участки).
Пятый этап проектирования
В основе процесса проектирования лежит метод нормализации, т. е. декомпозиции отношения, находящегося в предыдущей нормальной форме, на два или более отношений, которые удовлетворяют требованиям следующей нормальной формы. Приведем исходные отношения к БКНФ.
Клиенты
Отношение Клиенты находится в 1НФ, т.к. все его атрибуты принимают единственное значение.
Рассмотрим функциональные зависимости, присутствующие в отношении:
паспортные данные > ФИО, адрес, телефон, необходимость доставки
адрес>номер участка
В отношении присутствует явное и неявное избыточное дублирование данных, например
название улицы повторяется для многих клиентов
при необходимости изменить нумерацию участков могут возникнуть трудности, из-за того что придется исправить всю таблицу Клиенты.
Для устранения избыточности переходим к 2НФ и 3НФ.
Отношение находится в 2НФ, если оно находится в 1НФ и каждый неключевой атрибут функционально полно зависит от первичного ключа (составного)
Т.к. ключ отношения - простой, переходим к 3НФ
Отношение находится в 3НФ в том и только в том случае, если все неключевые атрибуты отношения взаимно независимы и полностью зависят от первичного ключа.
паспортные данные > ФИО, адрес, телефон, необходимость доставки
адрес>номер участка
Для устранения зависимости адрес>номер участка выделяем следующие отношения:
номер участка - адрес
номер записи
номер участка
код улицы
номер дома
код улицы - название
код
тип улицы
название улицы
Отношение Клиенты:
паспортные данные
ФИО
код улицы
номер дома
номер квартиры
телефон
необходимость доставки
Данное отношение находится в 3НФ.
Отношение находится в БКНФ, если оно находится в 3НФ и в нем отстствуют зависимости ключей от неключевых атрибутов.
У нас подобной зависимости нет, поэтому отношение Клиенты находится в БКНФ
Подписка
Номер подписки>паспортные данные клиента, индекс издания, дата начала подписки, дата окончания подписки
Информация об изданиях
Индекс издания>название издание, стоимость подписки на месяц, стоимость подписки на 3 месяца , стоимость подписки на 6 месяцев, стоимость подписки на год
Сотрудники
Т.к. один сотрудник может обслуживать несколько участков, то для устранения избыточности данных необходимо выделить отношение Почтальон-участок, состоящее из следующих полей:
Код записи
Табельный номер сотрудника
Номер участка
Код записи> Табельный номер сотрудника; Номер участка
Табельный номер>ФИО сотрудника, адрес, телефон, дата рождения.
Данное отношение находится в БКНФ
Каждый из неключевых атрибутов всех отношений функционально-полно зависит от первичного ключа своего отношения, и это значит, что все эти отношения находятся в 2НФ. Все неключевые атрибуты каждого из отношений взаимно-независимы и полностью зависят от своего первичного ключа, следовательно, все эти отношения находятся в 3НФ. Все атрибуты первичных ключей каждого из отношений не имеют зависимости от неключевых атрибутов, и это значит, что все эти отношения находятся в БКНФ.
Результатом проектирования базы данных «Почтовые отделения» является схема базы данных, представленная на рисунке 3
Размещено на http://www.allbest.ru
Размещено на http://www.allbest.ru
Рисунок 3 - Логическая модель «сущность-связь» почтового отделения
В результате данного преобразования, получены следующие таблицы с учетом типа данных MSAccess:
Таблица «Информация о подписчиках». Содержит информацию о клиентах почтового отделения.
Столбцы |
Тип данных |
Ограничения целостности |
Пояснение |
|
Серия и номер паспорта |
Числовой |
Первичный ключ 1000000000<>9999999999 |
Ключевое поле |
|
Фамилия |
Текстовый |
NOTNULL |
Фамилия клиента |
|
Имя |
Текстовый |
NOT NULL |
Имя клиента |
|
Отчество |
Числовой |
NOT NULL |
Отчество клиента |
|
Название улицы |
Числовой |
NOT NULL |
Подстановка из таблицы "код улицы - название" |
|
Номер дома |
Числовой |
NOT NULL |
Номер дома |
|
Номер корпуса |
Числовой |
Номер корпуса (если есть) |
||
Номер квартиры |
Числовой |
Номер квартиры (если частный дома - не заполняется) |
||
Требуется ли доставка |
Логический |
Да/Нет |
Необходимо ли доставлять издания в почтовый ящик |
Таблица «Информация о подписке». Содержитпаспортные данные клиентов, индексы изданий, на которые оформлена подписка, а также даты начала и окончания подписки
Столбцы |
Тип данных |
Ограничения целостности |
Пояснение |
|
Номер подписки |
Счетчик |
Первичный ключ |
Ключевое поле |
|
Паспортные данные |
Числовой |
NOT NULL 1000000000<>9999999999 |
Почтовый индекс |
|
Индекс издания |
Числовой |
NOT NULL |
Номер дома |
|
Начало подписки |
Дата/время |
NOT NULL |
Корпус, если есть |
|
Окончание подписки |
Дата/время |
NOT NULL |
Номер квартиры |
|
Срок |
Текстовый |
Список значений: "1 месяц";"3 месяца";"6 месяцев";"12 месяцев" |
Фиксированный список значений |
Таблица «Издания». Информация об изданиях, поступающих в почтовое отделение.
Столбцы |
Тип данных |
Ограничения целостности |
Пояснение |
|
Индекс |
Счетчик |
Первичный ключ |
Ключевое поле |
|
Название |
Текстовый (50) |
NOT NULL |
Название издание |
|
Цена(месяц) |
Числовой |
Цена в зависимости от срока подписки |
||
Цена(3 месяца) |
Числовой |
|||
Цена(6 месяцев) |
Числовой |
|||
Цена(12 месяцев) |
Числовой |
Таблица «Почтальоны». Информация о почтальонах, работающих в почтовом отделении.
Столбцы |
Тип данных |
Ограничения целостности |
Пояснение |
|
Табельный номер |
Числовой |
Первичный ключ |
Ключевое поле |
|
Фамилия |
Текстовый |
NOT NULL |
ФИО почтальона |
|
Имя |
Текстовый |
NOT NULL |
||
Отчество |
Текстовый |
NOT NULL |
||
Домашний адрес- УЛИЦА |
Текстовый |
NOT NULL |
Домашний адрес почтальона |
|
Домашний адрес - ДОМ |
Числовой |
NOT NULL |
||
Домашний адрес - КОРПУС |
Числовой |
|||
Домашний адрес - квартира |
Числовой |
|||
Телефон |
Числовой |
NOT NULL |
Номер телефона |
|
Дата рождения |
Дата/Время |
NOT NULL |
Дата рождения |
Таблица «Код улицы - название». Справочник улиц, обслуживаемых почтовым отделением.
Столбцы |
Тип данных |
Ограничения целостности |
Пояснение |
|
Код_улицы |
Счетчик |
Первичный ключ |
Ключевое поле |
|
Тип улицы |
Текстовый |
Список значений: "улица"; "проспект"; "проезд"; "переулок"; "шоссе"; "аллея" |
Тип улицы |
|
Название |
Текстовый |
NOT NULL |
Название улицы |
Таблица «Номер участка - адрес ». Справочник типов проездов города.
Столбцы |
Тип данных |
Ограничения целостности |
Пояснение |
|
Номер записи |
Числовой |
Первичный ключ |
Ключевое поле |
|
Номер участка |
Числовой |
NOT NULL |
Номер участка |
|
Номер дома |
Числовой |
NOT NULL |
Номер дома |
|
код улицы - название_Код |
Числовой |
Подстановка из таблицы "код улицы - название" |
Код улицы |
Таблица «Почтальоны - участки». Справочник основных операций паспортного стола.
Столбцы |
Тип данных |
Ограничения целостности |
Пояснение |
|
Код записи |
Счетчик |
Первичный ключ |
Ключевое поле |
|
Табельный номер |
Числовой |
NOT NULL |
Табльный номер |
|
Обслуживаемый участок |
Числовой |
NOT NULL |
Обслуживаемый им участок |
Схема базы данных, реализованная в MSAccess, представлена на рисунке 3
Рисунок 3 - Схема базы данных, реализованная в MSAccess
3. Разработка интерфейса пользователя
3.1 Описание интерфейса пользователя
база данные почтовый
При запуске БД выводится главная форма, на которой расположены следующие кнопки:
- Клиенты - открытие формы поиска документов, изменение, удаление и добавление новых документов (паспортов), отображение истории по регистрации данного документа, истории по заявкам и новым выданным паспортам.
- Подписка - работа со справочником адресов, обслуживаемых данным паспортным столом, отображение данных о регистрации граждан по конкретному адресу, а также всех заявок поданных по данному адресу.
- Издания - работа со справочниками улиц, оснований, операций и т.д.
- Сотрудники - добавление и обработка заявок от граждан
- Поиск клиента - поиск информации о клиенте.
- Информация о количестве выписываемых изданий- вывод информации о количестве выписываемых изданий всего по отделению, по участку, по улице или по дому. Также поиск информации о количестве выписываемых изданий по индексу изданий.
- Информация о количестве доставляемых изданий- вывод информации о количестве доставляемых изданий всего по отделению, по участку, по улице или по дому. Также поиск информации о количестве доставляемых изданий по индексу изданий.
- Информация о загруженности - вывод информации о загруженности почтальонов.
Рисунок 4 - Главная кнопочная форма
На форме «Редактирование информации о подписчиках» (см. рис. 5) доступны следующие кнопки:
-Найти запись -редактирование или удаление записей о подписчиках
-Добавить запись- добавление подписчика
-Удалить запись - удаление подписчиков, у которых давно (более года назад) закончилась подписка. ( Информация о подписчиках хранится в базе данных после окончания их подписки еще некоторое время, для того чтобы, если подписчик вновь решит оформить подписку, не пришлось вновь заносить его данные)
Рисунок 5 - Форма «Редактирование информации о подписчиках»
При нажатии кнопки «Найти запись» на форме «Редактирование информации о подписчиках» выводится форма «Информация о подписчиках» (см. рис. 6),открытая для редактирования записей. На форме имеются следующие функциональные кнопки:
- Сохранить запись - сохранить сделанные в записи изменения;
- Удалить запись - удаление выбранной записи.
- Перейти к подписке - закрытие формы «Информация о подписчиках» и открытие формы «Подписка».
-Закрыть форму - закрытие данной формы
Рисунок 6 - Форма «Информация о подписчиках»,открытая для редактирования
При нажатии кнопки «Добавить запись» на форме «Редактирование информации о подписчиках» выводится форма «Информация о подписчиках» (см. рисунок 7),открытая для добавления записей.
Рисунок 7 - Форма «Информация о подписчиках», открытая для добавления
При нажатии кнопки «Удалить записи» на форме «Редактирование информации о подписчиках» выполняется запрос на удаление подписчиков, которые более года не выписывали ни одного издания.
При нажатии на кнопку "Подписка" на Главной форме открывается форма «Редактирование информации о подписке»(рис.8).
Рисунок 8 - Форма «Редактирование информации о подписке»
На форме «Редактирование информации о подписке» (рис. 8) доступны следующие кнопки:
-Найти запись - редактирование или удаление записей о подписке
-Добавить запись - добавление подписки
-Просмотр записей - просмотр подписчиков, у которых закончилась подписка.
При нажатии кнопки «Найти запись» на форме «Редактирование информации о подписке» выводится форма «Подписка» (см. рис. 9),открытая для редактирования записей. На форме имеются следующие функциональные кнопки:
- Сохранить запись - сохранить сделанные в записи изменения;
- Удалить запись - удаление выбранной записи.
- Перейти к подписчикам - закрытие формы «Подписка» и открытие формы «Информация о подписчиках».
-Закрыть форму - закрытие данной формы
Рисунок 9. Форма «Подписка», открытая для редактирования
При нажатии кнопки «Добавить запись» на форме «Редактирование информации о подписчиках» выводится форма «Информация о подписчиках» (см. рис. 10),открытая для добавления записей.
Рисунок 10. Форма «Подписка», открытая для добавления записей
При нажатии на кнопку "Сотрудники" на Главной форме открывается форма «Редактирование информации о сотрудниках»(рис.11).
Рисунок 11. Форма «Редактирование информации о сотрудниках»
При нажатии кнопки «Найти запись» на форме «Редактирование информации о сотрудниках» выводится форма «Информация о сотрудниках» (см. рисунок 12),открытая для редактирования записей. На форме имеются следующие функциональные кнопки:
- Сохранить запись - сохранить сделанные в записи изменения;
- Удалить запись - удаление выбранной записи.
- Перейти к подписке - закрытие формы «Информация о сотрудниках» и открытие формы «Подписка».
-Закрыть форму - закрытие данной формы
Рисунок 12. Форма «Информация о сотрудниках», открытая для редактирования записей
При нажатии кнопки «Добавить запись» на форме «Редактирование информации о сотрудниках» выводится форма «Информация о сотрудниках» (см. рис. 12),открытая для добавления записей.
Рисунок 13. Форма «Информация о сотрудниках», открытая для добавления записей
При нажатии на кнопку "Поиск клиента" на Главной форме открывается форма «Поиск клиента» (рисунок 14).
Рисунок 14. Форма «Поиск клиента»
На форме "Поиск клиента" доступны следующие кнопки:
-Просмотр информации - при нажатии на кнопку "Просмотр информации" открывается форма "Выписываемые клиентом издания" (рисунок 15) и выполняется соответствующий запрос (конструкция и SQL запроса находятся в приложении №1)
Рисунок.15 "Выписываемые клиентом издания"
Суть запроса: по введенным паспортным данным клиента вывести информацию о количестве выписываемых изданий.
-Найти почтальона (по паспортным данным клиента) - открывается форма "Поиск почтальона по паспортным данным клиента"(рис.16) и выполняется соответствующий запрос, который по введенным паспортным данным клиента выдает информацию о почтальоне, его обслуживающем.
Рисунок 16 "Поиск почтальона по паспортным данным клиента"
-Найти почтальона (по адресу) - открывается форма "Поиск почтальона по адресу" (рисунок 17) и выполняется соответствующий запрос, который по введенному адресу выдает информацию о почтальоне.
Рисунок.17 "Поиск почтальона по адресу"
Следующая доступная кнопка на главной форме - "Информация о количестве выписываемых изданий". При нажатии на эту кнопку открывается следующая форма:
Рисунок.18 Поиск выписываемых изданий.
С помощью данной формы можно просмотреть информацию о количестве выписываемых изданий:
-Всего по отделению
-По участкам
-По улице
-По дому
Также можно получить информацию о количестве экземпляров конкретного издания, поступающего в почтовое отделение по подписке, указав индекс или название издания.
Форма "Поиск доставляемых изданий" (рисунок 19), вызываемая из главной формы нажатием кнопки "Информация о количестве доставляемых изданий" аналогична предыдущей форме, но, если в предыдущей форме выдается информация о количестве выписываемых изданий, то в данной форме предоставляется информация о количестве доставляемых изданий. Данные также можно получить всего по отделению, по участкам, по улице, по дому или же по конкретному изданию.
Рисунок.19 Поиск доставляемых изданий.
Последняя доступная кнопка на Главной форме это кнопка "Информация о загруженности почтальонов". При нажатии на нее открывается форма "Информация о загруженности сотрудников":
Рисунок.20 "Информация о загруженности сотрудников"
На данной форме доступны следующие кнопки:
-Просмотр общей загруженности - открывает форму "Загруженность почтальонов общая" (рисунок 21), на которой выводится информация о загруженности всех почтальонов отделения
Рисунок.21 "Загруженность почтальонов общая"
-Найти - поиск сотрудника, обслуживающего введенный адрес (форма "Поиск почтальона по адресу" рисунок 17)
-Просмотр записей -открывает форму "Загруженность почтальона"(рисунок 22), на которой выводится информация о загруженности конкретного почтальона.
Рисунок.22 "Загруженность почтальона"
3.2 Запросы, используемые в базе данных
1.Запрос на удаление старых записей (форма "Редактирование информации о подписчиках) - данный запрос удаляет все записи из таблицы "Информация о подписке", если подписка по данной записи закончилась более 1 года назад
Конструктор запроса:
DELETE [Информация о подписке].[Окончание подписки], [Информация о подписке].*
FROM [Информация о подписчиках] INNER JOIN [Информация о подписке] ON [Информация о подписчиках].[Серия и номер паспорта] = [Информация о подписке].[Паспортные данные]
WHERE ((([Информация о подписке].[Окончание подписки])<Date()-365));
2.Закончившаяся подписка (форма "Редактирование информации о подписке" просмотр закончившихся подписок) - выводит информацию о закончившихся подписках (с момента окончания подписки прошло менее 1 года)
SELECT [Информация о подписчиках].[Серия и номер паспорта], [Информация о подписчиках].Фамилия, [Информация о подписчиках].Имя, [Информация о подписчиках].Отчество, [Информация о подписке].[Окончание подписки]
FROM Издания INNER JOIN ([Информация о подписчиках] INNER JOIN [Информация о подписке] ON [Информация о подписчиках].[Серия и номер паспорта] = [Информация о подписке].[Паспортные данные]) ON Издания.индекс = [Информация о подписке].[индекс издания]
WHERE ((([Информация о подписке].[Окончание подписки]) Between Date() And Date()-365));
3.Поиск выписываемых изданий по паспортным данным клиента-выдает информацию о выписываемых клиентом изданиях по введенным паспортным данным.
SELECT [Информация о подписке].[Паспортные данные], [Информация о подписчиках].Фамилия, [Информация о подписке].[индекс издания], Издания.название, [Информация о подписке].[Окончание подписки]
FROM Издания INNER JOIN ([Информация о подписчиках] INNER JOIN [Информация о подписке] ON [Информация о подписчиках].[Серия и номер паспорта] = [Информация о подписке].[Паспортные данные]) ON Издания.индекс = [Информация о подписке].[индекс издания]
WHERE ((([Информация о подписке].[Окончание подписки])>Date() Or ([Информация о подписке].[Окончание подписки])=Date()))
GROUPBY [Информация о подписке].[Паспортные данные], [Информация о подписчиках].Фамилия, [Информация о подписке].[индекс издания], Издания.название, [Информация о подписке].[Окончание подписки]
HAVING ((([Информация о подписке].[Паспортные данные])=[Введите паспортные данные]));
4. Поиск почтальона по паспортным данным клиента - по введенным паспортным данным клиента выдает информацию об обслуживающем его почтальоне.
SELECT [Информация о подписчиках].[Серия и номер паспорта], [Информация о подписчиках].Фамилия, [Информация о подписчиках].Имя, [Информация о подписчиках].Отчество, Почтальоны.Фамилия, Почтальоны.Имя, Почтальоны.Отчество
FROM Почтальоны INNERJOIN ((([код улицы - название] INNERJOIN [Информация о подписчиках] ON [код улицы - название].Код = [Информация о подписчиках].[Название улицы]) INNERJOIN [номер участка-адрес] ON ([Информация о подписчиках].[Номер дома] = [номер участка-адрес].[Номер дома]) AND ([код улицы - название].Код = [номер участка-адрес].[код улицы - название_Код])) INNERJOIN [Почтальоны-участки] ON [номер участка-адрес].[Номер участка] = [Почтальоны-участки].[Обслуживаемый участок]) ON Почтальоны.[Табельный номер] = [Почтальоны-участки].[Табельный номер]
GROUPBY [Информация о подписчиках].[Серия и номер паспорта], [Информация о подписчиках].Фамилия, [Информация о подписчиках].Имя, [Информация о подписчиках].Отчество, Почтальоны.Фамилия, Почтальоны.Имя, Почтальоны.Отчество
HAVING ((([Информация о подписчиках].[Серия и номер паспорта])=[Введите паспортные данные клиента]));
Поиск почтальона по улице и номеру дома - по введенным типу улицы, улице и номеру дома выдает информацию об обслуживающем данный адрес почтальону.
SELECT [код улицы - название].[Тип улицы], [код улицы - название].[Название улицы], [номер участка-адрес].[Номер дома], Почтальоны.Фамилия, Почтальоны.Имя, Почтальоны.Отчество
FROM [код улицы - название] INNERJOIN ([номер участка-адрес] INNERJOIN (Почтальоны INNERJOIN [Почтальоны-участки] ON Почтальоны.[Табельный номер] = [Почтальоны-участки].[Табельный номер]) ON [номер участка-адрес].[Номер участка] = [Почтальоны-участки].[Обслуживаемый участок]) ON [код улицы - название].Код = [номер участка-адрес].[код улицы - название_Код]
WHERE ((([код улицы - название].[Тип улицы])=[Введите тип улицы]) AND (([код улицы - название].[Название улицы])=[Введите название улицы]) AND (([номер участка-адрес].[Номер дома])=[Введите номер дома]));
Общее количество выписываемых изданий (по отделению) - выдает информацию о количестве экземпляров изданий, выписываемых всего по отделению по подписке.
SELECT [Информация о подписке].[индекс издания], Издания.название, Count([Информация о подписке].[индекс издания]) AS [Count-индекс издания]
FROM Издания INNER JOIN [Информация о подписке] ON Издания.индекс = [Информация о подписке].[индекс издания]
WHERE ((([Информация о подписке].[Окончание подписки])>Date() Or ([Информация о подписке].[Окончание подписки])=Date()))
GROUP BY [Информация о подписке].[индекс издания], Издания.название;
Количество выписываемых изданий по участку - по введенному номеру участка, выдает информацию о количестве и распределении выписываемых по участку экземпляров изданий.
SELECT [номер участка-адрес].[Номер участка], Издания.индекс, Издания.название
FROM ([код улицы - название] INNER JOIN ([Информация о подписчиках] INNER JOIN (Издания INNER JOIN [Информация о подписке] ON Издания.индекс = [Информация о подписке].[индекс издания]) ON [Информация о подписчиках].[Серия и номер паспорта] = [Информация о подписке].[Паспортные данные]) ON [код улицы - название].Код = [Информация о подписчиках].[Название улицы]) INNER JOIN [номер участка-адрес] ON ([Информация о подписчиках].[Номер дома] = [номер участка-адрес].[Номер дома]) AND ([код улицы - название].Код = [номер участка-адрес].[код улицы - название_Код])
WHERE ((([Информация о подписке].[Окончание подписки])>Date() Or ([Информация о подписке].[Окончание подписки])=Date()))
GROUP BY [номер участка-адрес].[Номер участка], Издания.индекс, Издания.название
HAVING ((([номер участка-адрес].[Номер участка])=[Введите номер участка]));
Количество выписываемых изданий по улице.
SELECT [код улицы - название].[Тип улицы], [код улицы - название].[Название улицы], Издания.индекс, Издания.название, Count([Информация о подписке].[номер подписки]) AS [Count-номер подписки], [Информация о подписке].[Окончание подписки]
FROM Издания INNER JOIN ([код улицы - название] INNER JOIN ([Информация о подписчиках] INNER JOIN [Информация о подписке] ON [Информация о подписчиках].[Серия и номер паспорта] = [Информация о подписке].[Паспортные данные]) ON [код улицы - название].Код = [Информация о подписчиках].[Название улицы]) ON (Издания.индекс = [Информация о подписке].[индекс издания]) AND (Издания.индекс = [Информация о подписке].[индекс издания]) AND (Издания.индекс = [Информация о подписке].[индекс издания])
GROUP BY [код улицы - название].[Тип улицы], [код улицы - название].[Название улицы], Издания.индекс, Издания.название, [Информация о подписке].[Окончание подписки]
HAVING ((([код улицы - название].[Тип улицы])=[Введите тип улицы]) AND (([код улицы - название].[Название улицы])=[Введите название улицы]) AND (([Информация о подписке].[Окончание подписки])>Date() Or ([Информация о подписке].[Окончание подписки])=Date()));
Количество выписываемых изданий по дому:
SELECT [код улицы - название].[Тип улицы], [код улицы - название].[Название улицы], [Информация о подписчиках].[Номер дома], Издания.индекс, Издания.название, Count([Информация о подписке].[номер подписки]) AS [Count-номер подписки]
FROM [код улицы - название] INNER JOIN ([Информация о подписчиках] INNER JOIN (Издания INNER JOIN [Информация о подписке] ON Издания.индекс = [Информация о подписке].[индекс издания]) ON [Информация о подписчиках].[Серия и номер паспорта] = [Информация о подписке].[Паспортные данные]) ON [код улицы - название].Код = [Информация о подписчиках].[Название улицы]
WHERE ((([Информация о подписке].[Окончание подписки])>Date() Or ([Информация о подписке].[Окончание подписки])=Date()))
GROUP BY [код улицы - название].[Тип улицы], [код улицы - название].[Название улицы], [Информация о подписчиках].[Номер дома], Издания.индекс, Издания.название
HAVING ((([код улицы - название].[Тип улицы])=[Введите тип улицы]) AND (([код улицы - название].[Название улицы])=[Введите название улицы]) AND (([Информация о подписчиках].[Номер дома])=[Введите номер дома]));
Запросы, связанные с количеством доставляемых изданий, отличаются от запросов по выписываемым изданиям только одним дополнительным условием: поле "Требуется ли доставка" из таблицы " Информация о подписчиках" должно иметь значении "Да"
Общая загруженность почтальонов - информация об общем количестве доставляемых изданий почтальонами
SELECT Почтальоны.Фамилия, Почтальоны.Имя, Почтальоны.Отчество, Count([Информация о подписке].[номер подписки]) AS [Count-номер подписки]
FROM ([код улицы - название] INNER JOIN ([Информация о подписчиках] INNER JOIN ([номер участка-адрес] INNER JOIN (Почтальоны INNER JOIN [Почтальоны-участки] ON Почтальоны.[Табельный номер] = [Почтальоны-участки].[Табельный номер]) ON [номер участка-адрес].[Номер участка] = [Почтальоны-участки].[Обслуживаемый участок]) ON [Информация о подписчиках].[Номер дома] = [номер участка-адрес].[Номер дома]) ON ([код улицы - название].Код = [номер участка-адрес].[код улицы - название_Код]) AND ([код улицы - название].Код = [Информация о подписчиках].[Название улицы])) INNER JOIN [Информация о подписке] ON [Информация о подписчиках].[Серия и номер паспорта] = [Информация о подписке].[Паспортные данные]
WHERE ((([Информация о подписчиках].[Требуется ли доставка])=Yes))
GROUP BY Почтальоны.Фамилия, Почтальоны.Имя, Почтальоны.Отчество;
8.Загруженность почтальона - загруженность конкретного почтальона, распределения количества доставляемых экземпляров по изданиям
SELECT Почтальоны.Фамилия, Почтальоны.Имя, Почтальоны.Отчество, Издания.индекс, Издания.название, Count(Издания.индекс) AS [Count-индекс]
FROM Издания INNER JOIN (([Информация о подписчиках] INNER JOIN ([код улицы - название] INNER JOIN ([номер участка-адрес] INNER JOIN (Почтальоны INNER JOIN [Почтальоны-участки] ON Почтальоны.[Табельный номер] = [Почтальоны-участки].[Табельный номер]) ON [номер участка-адрес].[Номер участка] = [Почтальоны-участки].[Обслуживаемый участок]) ON [код улицы - название].Код = [номер участка-адрес].[код улицы - название_Код]) ON ([Информация о подписчиках].[Название улицы] = [код улицы - название].Код) AND ([Информация о подписчиках].[Номер дома] = [номер участка-адрес].[Номер дома])) INNER JOIN [Информация о подписке] ON [Информация о подписчиках].[Серия и номер паспорта] = [Информация о подписке].[Паспортные данные]) ON Издания.индекс = [Информация о подписке].[индекс издания]
WHERE ((([Информация о подписчиках].[Требуется ли доставка])=Yes) AND (([Информация о подписке].[Окончание подписки])>Date() Or ([Информация о подписке].[Окончание подписки])=Date()))
GROUP BY Почтальоны.Фамилия, Почтальоны.Имя, Почтальоны.Отчество, Издания.индекс, Издания.название
HAVING (((Почтальоны.Фамилия)=[Введите фамилию почтальона]) AND ((Почтальоны.Имя)=[Введите имя почтальона]) AND ((Почтальоны.Отчество)=[Введите отчество почтальона])).
Отчеты, выдаваемые базой данных.
Выписываемые клиентом издания
Загруженность всех почтальонов
Загруженность почтальона
Количество выписываемых изданий по номеру дома
Количество доставляемых изданий по номеру дома
Количество доставляемых изданий по улице
Количество выписываемых изданий по индексу
Количество выписываемых изданий по улице
Количество выписываемых изданий по участкам
Количество доставляемых изданий по индексу
Количество доставляемых изданий по названию
Количество доставляемых изданий по участкам
Общее количество выписываемых изданий
Поиск обслуживающего почтальона по номеру дома
Заключение
Проектирование базы данных представляет собой длительный и трудоемкий процесс. Качество созданной базы данных зависит от анализа предметной области и выбранной методологии проектирования. При неполном анализе предметной области в процессе эксплуатации созданной базы данных может возникать избыточное дублирование данных, а так же различные аномалии, что, скорее всего, приведет к потере необходимых данных и повторному проектированию базы данных. Процесс последующего проектирования базы данных не менее ответственный, так как необходимо четко выявить необходимые сущности и согласно связям между ними сформировать отношения. Процесс реализации базы данных средствами СУБД является преобразованием выполненного проектирования на ЭВМ.
В данном курсовом проекте разработана информационная система почтового отделения, проанализирована и подробно описана предметная область. Были выявлены основные функции и операции, которые выполняет почтовое отделение, а также определены основные пользователи будущей информационной системы. По результатам анализа предметной области выявлены основные сущности и связи между ними и построена концептуальная модель данных в виде диаграммы «сущность-связь».
В ходе даталогического проектирования разработана реляционная модель данных почтового отделения, которая состоит из 12 таблиц, связанных между собой внешними ключами. Представлен скрипт на создание базы данных в виде SQL-запросов, который может быть использован в любой СУБД.
В качестве СУБД выбран MSAccess, в котором разработан клиентский интерфейс программного обеспечения для работы с базой данных паспортного стола. Разработаны различные формы и отчеты, доступ к которым ограничен для различных групп пользователей.
Таким образом, в результате выполнения данной курсовой работы разработана информационная система для почтового отделения, которая позволит повысить эффективность его работы. Все пункты технического задания выполнены в полном объеме. Полученную базу данных можно использовать в экспериментальных или показательных целях для проектирования полнофункциональной информационной системы с единой базой данных для работы почтовых отделений, а также типографий.
Список использованных источников
Фрост Р., Дей Д., Ван Слайк К. "Базы данных.Проектирование и разработка."/перевод с англ. А.Ю. Кухаренко. Издательство "НТ Пресс",2007 г.-592 стр.:ил.
Атаманюк Ю.С., Елисеенков А.Е., Сиек Ю.Л. "Введение в базы данных:учебное пособие"/ Издательский центр СПбГМТУ 2007 г.,107 стр.
Карпова Т.С. Базы данных: модели, разработка, реализация. - СПб.: Питер, 2001. - 304 с.
Хомоненко А.Д., Гридин В.В. Microsoft Access. Быстрый старт. - СПб.: БХВ-Петербург, 2003. - 304 с.
Золотова С.И. Практикум по Access. - М.: Финансы и статистика, 2004. - 144 с.
Тиори Т., Фрай Дж. Проектирование структур баз данных: В 2-х кн. Кн. 1. Пер. с англ. - М.: Мир, 1985. - 287 с.
Чамберлин Д.Д., Астрахан М.М., Эсваран К.П., Грифитс П.П., Лори Р.А., Мел Д.В., Райшер П., Вейд Б.В. SEQUEL 2: унифицированный подход к определению, манипулированию и контролю данных //СУБД. - 1996. - №1. - С.144-159.
Чаудхари С. Методы оптимизации запросов в реляционных системах //СУБД. - 1998. - №3. - С.22-36.
Чен П. Модель "сущность-связь" - шаг к единому представлению о данных //СУБД. - 1995. - №3. - С.137-158.
Размещено на Allbest.ru
Подобные документы
Проектирование системы управления базой данных "Почтовые отделения" для создания единой информационной системы: создание таблиц для хранения данных, ввод данных, разработка элементов базы, предназначенных для просмотра, редактирования и вывода информации.
курсовая работа [1,4 M], добавлен 31.03.2010Проектирование базы данных, содержащей информацию, которая всесторонне характеризует российский рынок медицинского оборудования. Описание атрибутов сущностей и связей, отраженных в разработанной ER-модели. Разработка отчетов, форм, запросов в базе данных.
курсовая работа [3,2 M], добавлен 19.06.2015Описание первичных и результатных документов, типа связи информационных объектов. Построение информационно-логической модели базы данных и её реализация в СУБД Access (создание таблиц, запросов, форм, отчётов). Разработка интерфейса пользователя.
курсовая работа [2,1 M], добавлен 14.11.2013Создание базы данных, хранящей и обрабатывающей информацию о работе мебельного магазина. Описание предметной области, инфологическое, логическое и физическое проектирование. Разработка руководства пользователя. Назначение связей, нормализация отношений.
курсовая работа [2,7 M], добавлен 02.12.2012Выявление сущностей, связей, модели работы магазина и ее предпосылок. Построение модели базы данных, ее внутренняя структура и требования к функциональности. Разработка запросов, осуществляющих поиск и вывод необходимой информации для пользователя.
отчет по практике [425,9 K], добавлен 11.12.2015Анализ предметной области и введение ограничений. Выделение базовых сущностей. Концептуальная модель данных. Построение схемы реляционной модели базы данных магазина одежды в третьей нормальной форме. Описание физической БД. Проектирование интерфейса.
курсовая работа [2,6 M], добавлен 20.11.2013Составление схемы концептуальной модели данных. Разработка структуры реляционной базы данных и интерфейса пользователя. Особенности главных этапов проектирования базы данных. Способы реализации запросов и отчетов. Специфика руководства пользователя.
курсовая работа [186,9 K], добавлен 18.12.2010Создание базы данных для районов Санкт-Петербурга, с помощью которой можно оперативно найти нужную информацию всем районам города. Построение ER-диаграммы, определение ключевых полей для связи и правил этих связей. Разработка пользовательского интерфейса.
курсовая работа [325,8 K], добавлен 12.07.2012Создание таблиц базы данных с помощью MS Access "Страны Азии". Форма базы данных и запросы к выборкам данных. Модификация структуры таблиц, создания связей между главными таблицами, редактирование данных и проектирование форм для реальной базы данных.
контрольная работа [723,9 K], добавлен 25.11.2012Определение базовых сущностей предметной области. Представление базы данных реляционной моделью. Построение ER-диаграмм. Функции и архитектура информационной системы. Создание таблиц БД на языке SQL Server. Запросы на выборку и манипулирование данными.
курсовая работа [1,8 M], добавлен 06.05.2015