
- •Курсовой проект
- •Тема: «Проектирование приложения пользователя для ведения учета в турфирме»
- •Список используемых сокращений
- •Содержание
- •Введение
- •3. Разработка информационно-логической модели предметной области.
- •1. Формулировка задания на курсовой проект
- •2. Представление о реляционной модели данных
- •2.1. Определение базы данных
- •2.2. Концептуальная, логическая и физическая модели предметной области
- •2.3. Реляционная модель данных
- •3. Разработка информационно-логической модели предметной области
- •3.1. Описание предметной области и постановка задачи на курсовую работу
- •3.2. Логическое проектирование задачи учета в турфирме
- •3.2.1. Анализ документов
- •3.2.2. Выделение информационных объектов и определение их атрибутов
- •3.2.3. Определение связей и построение илм
- •3.2.4. Разработка контрольного примера
- •4. Создание бд в среде субд Microsoft Access
- •Заключение
- •Список литературных источников
- •Приложение 1 примеры документов учета и отчетности турфирмы
- •Личный листок по учету кадров
- •Агрегированный отчет о финансовых результатах (о прибылях и убытках) за ________год
- •Приложение 2 Категории услуг в отелях и их обозначения типы размещения
- •Классификация номеров
- •Типы питания в отелях
- •Приложение 3 Внесение данных контрольного примера в бд
- •Приложение 4 Интерфейс автоматизированной системы управления учетом в турфирме
3.2.2. Выделение информационных объектов и определение их атрибутов
Объекты БД, предложенные в параграфе 3.2.1, требуют уточнения. Следует определить, какие именно поля должна содержать каждая из таблиц. Возможно, что результатом этого шага станет изменение состава таблиц будущей БД. При этом полученная схема БД должна удовлетворять 3 НФ (параграф 2.3).
Прежде всего, при детализации состава и структуры таблиц следует учитывать требования 1 НФ: в полях таблиц должна содержаться необходимая и достаточная для решения задачи информация, при этом сами поля должны быть выделены в соответствии с поисковыми задачами, которые могут возникнуть у пользователей АСУ (т.е. должна быть выполнена «атомизация» полей). Например, в таблице «Клиент» предпочтительнее создать отдельные поля для хранения фамилии, имени и отчества клиента: может понадобиться поиск клиента по фамилии/имени или сортировка списка клиентов по фамилии/имени. Также поля «паспортные данные» (российского и заграничного паспортов) следует разбить на несколько: серия и номер, дата выдачи, учреждение, выдавшее паспорт. Также для выезжающих за рубеж (особенно в страны, имеющие визовый режим с РФ) актуальным является срок окончания действия загранпаспорта.
В то же время в таблице «Туроператор» необязательно выделять самостоятельные поля для хранения фамилии, имени и отчества контактного лица (т.е. того сотрудника фирмы-туроператора, с которым, как правило ведут переговоры менеджеры турфирмы-агента): поиск конкретного лица по имени и отчеству вряд ли понадобится.
В таблице «Туроператор» удобно было бы разделить поле «адрес туроператора» на несколько полей. Например: «страна», «город», «адрес» (где под адресом понимается уже адрес в конкретном городе, т.е. название улицы и номер дома). Данное требование тоже связано с предполагаемыми задачами, которые можно будет решать с помощью АСУ (задачами поиска, выборки, сортировки и т.п.): удобно было бы делать выборки фирм-партнеров по названию страны их расположения или города. С другой стороны, для таблицы «Клиент» деление поля «адрес» на несколько составляющих может оказаться излишним, особенно если предположить, что фирма работает только с клиентами из Санкт-Петербурга.
В параграфе 3.2.1 не для всех объектов упоминались ключевые поля, но очевидно, что они должны присутствовать в модели данных.
Исходя из высказанных замечаний, рассмотрим набор таблиц с их предполагаемым набором полей:
1. Поля таблицы «Туроператор»: код туроператора, название туроператора, ИНН туроператора, ФИО директора, страна расположения туроператора, город расположения туроператора, адрес туроператора, телефон туроператора, факс туроператора, ФИО контактного лица, рейтинг туроператора.
2. Поля таблицы «Тур»: код тура, название тура, маршрут (включая вид транспорта, стоимость проезда до места назначения и обратно), отель, стоимость страховки, дата начала тура, длительность тура, сопровождающее лицо.
Некоторые из полей таблицы «Тур» указывают на то, что в модели данных следует выделить еще ряд таблиц. Так, полное описание маршрута удобнее выполнить в отдельной таблицы со своим набором полей. Также же замечание относится и к отелям: для полной характеристики отеля лучше создать самостоятельный объект в БД.
3. Поля таблицы «Маршрут»: код маршрута, туроператор, сформировавший маршрут, пункт отправления, пункт прибытия, страна пребывания, вид транспорта, стоимость проезда.
4. Поля таблицы «Отель»: код отеля, название отеля, уровень обслуживания (количество «звезд»), почтовый индекс отеля, страна расположения отеля, город расположения отеля, адрес отеля, телефон отеля, факс отеля, e-mail отеля, типы размещения в отеле, стоимость проживания, виды питания в отеле, стоимость питания.
5. Поля таблицы «Клиент»: код клиента, фамилия клиента, имя клиента, отчество клиента, серия и номер паспорта РФ, дата выдачи паспорта РФ, учреждение, выдавшее паспорт РФ, серия и номер загранпаспорта, дата выдачи загранпаспорта, учреждение, выдавшее загранпаспорт, дата окончания срока действия загранпаспорта, дата рождения клиента, пол клиента, образование клиента, место работы, адрес, основной номер телефона клиента, дополнительный номер телефона клиента, e-mail клиента.
6. Поля таблицы «Сотрудник»: код сотрудника, фамилия сотрудника, имя сотрудника, отчество сотрудника, отдел, должность, оклад.
7. Поля таблицы «Договор»: номер договора, выбранный тур, выбранный тип размещения в отеле, выбранный вид питания в отеле, клиент, сотрудник, оформивший договор, дата оформления договора, стоимость лечения, доля торговой надбавки в цене.
Требуют уточнения такие понятия, входящие в описание отеля и тура, как «тип размещения в отеле» и «вид питания».
В практике управления в туризме принято разделять категории номеров и тип размещения: при одной и той же категории номер типы размещения туристов могут быть различными и наоборот. Например, размещение в номере стандартного типа может быть одноместным, двухместным и т.д. Для разновидностей номеров в отелях и типов размещения существуют общепринятые в мировой практике сокращения (Приложение 2). Также выделяют стандартный набор видов питания, предлагаемых в отелях (приложение 2).
Объекты БД, отражающие указанные замечания, приведены в табл. 2. – 8.
Таблица 2
Объект БД «Туроператор»
к |
название туроператора |
ИНН туроператора |
ФИО директора |
страна расположения туроператора |
город расположения туроператора |
адрес туроператора |
телефон туроператора |
факс туроператора |
ФИО контактного лица |
рейтинг туроператора |
Таблица 3
Объект БД «Тур»
к |
название тура |
код маршрута |
вид транспорта |
стоимость проезда |
код отеля |
стоимость страховки |
дата начала тура |
длительность тура |
код сопровождающего лица |
Таблица 4
Объект БД «Отель»
к |
н |
у |
п |
с |
г |
т |
ф |
e |
к |
т |
с |
в |
с |
Таблица 5
Объект БД «Маршрут»
к |
код туроператора |
пункт отправления |
пункт прибытия |
страна пребывания |
вид транспорта |
стоимость проезда |
Таблица 6
Объект БД «Клиент»
к |
фамилия клиента |
имя клиента |
отчество клиента |
серия и номер паспорта РФ |
дата выдачи паспорта РФ |
учреждение, выдавшее паспорт РФ |
серия и номер загранпаспорта |
дата выдачи загранпаспорта |
учреждение, выдавшее загранпаспорт |
дата окончания срока действия загранпаспорта |
дата рождения клиента |
пол клиента |
образование клиента |
место работы |
адрес |
основной номер телефона |
, дополнительный номер телефона |
|
Таблица 7
Объект БД «Сотрудник»
к |
фамилия сотрудника |
имя сотрудника |
отчество сотрудника |
отдел |
должность |
оклад |
Таблица 8
Объект БД «Договор»
н |
к |
к |
т |
в |
к |
к |
д |
с |
д |
Табл. 4 и 7 отражают то обстоятельство, что при заданной структуре таблиц БД «Отель»и «Сотрудник» они не соответствуют 2 НФ: есть поля, значения которых зависят не от значения первичного ключа. Так, в таблице «Отель» стоимость проживания зависит от категории номера и типа размещения, а стоимость питания – от выбранного клиентом вида питания. Строго говоря, и стоимость размещения, и стоимость питания зависят не только от выбранного типа размещения и питания, а от ценовой политики конкретного отеля. Поэтому в дальнейшем таблица «Отель» разбивается на ряд таблиц (табл. 9-14).
Что касается таблицы БД «Сотрудник», то здесь наименование должности определяется отделом. Как правило, должность определяет и величину оклада, но в модели данных принимается упрощение: величина оклада определяется персонально для каждого из сотрудников и напрямую не зависит от занимаемой должности, что является нормально практикой для малых фирм. Таблица «Сотрудник» разделяется на три таблицы (табл. 15-17).
Таблица 9
Объект БД «Категория номера»
к |
наименование категории номера |
Таблица 10
Объект БД «Тип размещения»
к |
расшифровка типа размещения |
Таблица 11
Объект БД «Питание»
к |
вид питания |
Таблица 12
Объект БД «Отель»
к |
название отеля |
уровень обслуживания |
почтовый индекс отеля |
страна расположения отеля |
город расположения отеля |
телефон отеля |
факс отеля |
e-mail отеля |
Таблица 13
Объект БД «Стоимость проживания»
к |
код категории номера |
к |
с |
Таблица 14
Объект БД «Стоимость питания»
к |
код питания |
стоимость питания в сутки |
Таблица 15
Объект БД «Отдел»
к |
наименование отдела |
Таблица 16
Объект БД «Должность»
к |
наименование должности |
Таблица 17
Объект БД «Сотрудник»
к |
ф |
и |
о |
к |
к |
о |
Итоговый состав таблиц БД (табл. 2, 3, 5, 8, 9-14, 15-17) соответствует 3 НФ.
В следующем параграфе пойдет речь о связях между таблицами, но можно предварить этот шаг проектирования БД описанием типа ключевых полей таблиц БД (полей первичного ключа). В СУБД Access есть возможность автоматического создания ключевых полей типа «счетчик» [2, 7], но лучше ее избегать, чтобы структура БД была полностью продуманной. Так, ключевым полем таблицы, содержащей сведения о сотруднике не стóит делать имя сотрудника или его фамилию: в подразделении могут работать тезки, кроме того, поля текстового типа не могут быть полями индекса. А как было отмечено в параграфе 2.3, именно механизм индексирования позволяет сделать поиск в БД эффективным. Желательно, чтобы ключевые поля были числового типа. Поэтому предполагается ввести системы кодирования для каждого из объектов БД.
Функциональные зависимости, выявленные при анализе документов, позволяют выделить объекты рассматриваемой предметной области и описать их реквизиты (имя, тип, длина поля, признак ключа). Для признака ключа используются следующие сокращения: П – простой; У – уникальный (первичный); С – составной (состоит из двух или нескольких реквизитов), В – вторичный (используется для связи с главной таблицей). Для описания объекта БД используются названия полей (реквизитов документов), указанные в таблицах: пробел между словами в именах полей здесь не используется, что является подготовкой к физической реализации модели БД. Описание объектов приведено в табл. 18. [2]
Таблица 18
Имя реквизита |
Признак ключа |
Тип данных |
Длина поля |
Название объекта
|
Код_туроператора |
П,У |
текст |
10 |
Туроператор
|
Название_туроператора |
|
текст |
50 |
|
ИНН_туроператора |
|
текст |
10 |
|
ФИО_директора |
|
текст |
50 |
|
Страна_расположения_туроператора |
|
текст |
50 |
|
Город_расположения_туроператора |
|
текст |
50 |
|
Адрес_туроператора |
|
текст |
50 |
|
Телефон_туроператора |
|
текст |
50 |
|
Факс_туроператора |
|
текст |
50 |
|
ФИО_контактного_лица |
|
текст |
100 |
|
Рейтинг_туроператора |
|
текст |
10 |
|
Код_маршрута |
П, У |
текст |
30 |
Маршрут
|
Код_туроператора |
П, В |
текст |
10 |
|
Пункт_отправления |
|
текст |
50 |
|
Пункт_прибытия |
|
текст |
50 |
|
Страна_пребывания |
|
текст |
50 |
|
Вид_транспорта |
|
текст |
50 |
|
Стоимость_проезда |
|
денежный |
фиксированный |
|
Код_отдела |
П, У |
текст |
4 |
Отдел |
Наименование_отдела |
|
текст |
50 |
|
Код_должности |
П, У |
число |
целое |
Должность |
Наименование_должности |
|
текст |
100 |
|
Код_сотрудника |
П, У |
текст |
10 |
Сотрудник |
Фамилия_сотрудника |
|
текст |
50 |
|
Имя_сотрудника |
|
текст |
50 |
|
Отчество_сотрудника |
|
текст |
50 |
|
Код_отдела |
П, В |
текст |
4 |
|
Код_должности |
П, В |
число |
целое |
|
Оклад |
|
денежный |
фиксированный |
|
Код_отеля |
П, У |
число |
длинное целое |
Отель
|
Название_отеля |
|
текст |
50 |
|
Уровень_обслуживания |
|
число |
длинное целое |
|
Почтовый_индекс_отеля |
|
текст |
10 |
|
Страна |
|
текст |
50 |
|
Город_расположения_отеля |
|
текст |
50 |
|
Адрес_отеля |
|
текст |
50 |
|
Телефон_отеля |
|
текст |
50 |
|
Факс_отеля |
|
текст |
50 |
|
E_mail_отеля |
|
текст |
50 |
|
Код_питания |
П, У |
текст |
25 |
Питание |
Вид_питания |
|
текст |
50 |
|
Код_категории_номера |
П, У |
текст |
15 |
Категория_номера |
Наименование_категории_номера |
|
текст |
100 |
|
Код_типа_размещения |
П, У |
текст |
15 |
Тип_размещения |
Расшифровка_типа_размещения |
|
текст |
100 |
|
Код_питания |
С, В |
текст |
25 |
Стоимость_питания |
Код_отеля |
С, В |
число |
длинное целое |
Стоимость_питания |
Стоимость_питания_в_сутки |
|
денежный |
фиксированный |
|
Код_отеля |
С, В |
число |
длинное целое |
Стоимость_проживания |
Код_категории_номера |
С, В |
текст |
15 |
|
Код_типа_размещения |
С, В |
текст |
15 |
|
Стоимость_проживания_в_сутки |
|
денежный |
фиксированный |
|
Код_тура |
П, У |
число |
длинное целое |
Тур |
Название_тура |
|
текст |
50 |
|
Код_маршрута |
П, В |
текст |
30 |
|
Код_сопровождающего |
П, В |
текст |
10 |
|
Код_отеля |
П, В |
число |
длинное целое |
|
Дата_начала_тура |
|
дата/время |
фиксированный |
|
Длительность_тура |
|
число |
целое |
|
Стоимость_страховки |
|
денежный |
фиксированный |
|
Код_клиента |
П, У |
текст |
30 |
Клиент |
Фамилия_клиента |
|
текст |
50 |
|
Имя_клиента |
|
текст |
50 |
|
Отчество_клиента |
|
текст |
50 |
|
Номер_паспорта_РФ |
|
текст |
50 |
|
Дата_выдачи_паспорта_РФ |
|
дата/время |
фиксированный |
|
Учреждение_выдавшее_пасп_РФ |
|
текст |
150 |
|
Номер_загран_паспорта |
|
текст |
50 |
|
Дата_выдачи_загран_паспорта |
|
дата/время |
фиксированный |
|
Учреждение_выдавшее_загран_паспорт |
|
текст |
150 |
|
Дата_окончания_срока_действ_загр_паспорта |
|
дата/время |
фиксированный |
|
Дата_рождения_клиента |
|
дата/время |
фиксированный |
|
Пол_клиента |
|
текст |
50 |
|
Образование_клиента |
|
текст |
50 |
|
Место_работы_клиента |
|
текст |
150 |
|
Адрес_клиента |
|
текст |
50 |
|
Тел_клиента |
|
текст |
50 |
Клиент |
Доп_тел_клиента |
|
текст |
50 |
|
e_mail_клиента |
|
текст |
50 |
|
Номер_договора |
П, У |
текст |
30 |
Договор |
Код_тура |
П, В |
число |
длинное целое |
|
Код_категории_номера |
П, В |
текст |
15 |
|
Код_типа_размещения |
П, В |
текст |
15 |
|
Код_питания |
П, В |
текст |
25 |
|
Код_клиента |
П, В |
текст |
30 |
|
Код_сотрудника |
П, В |
текст |
30 |
|
Дата_договора |
|
дата/время |
фиксированный |
|
Наличие_страховки |
|
логический |
|
|
Стоимость_лечения |
|
денежный |
фиксированный |
|
Доля_торг_надбавки_в_цене_путевки |
|
процентный |
фиксированный |
|