Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Tour_Access.doc
Скачиваний:
16
Добавлен:
07.12.2018
Размер:
3.58 Mб
Скачать

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-mail отеля

категории номеров в отеле

типы размещения в отеле

стоимость проживания в отеле

виды питания в отеле

стоимость питания

Таблица 5

Объект БД «Маршрут»

код маршрута

код туроператора

пункт отправления

пункт прибытия

страна пребывания

вид транспорта

стоимость проезда

Таблица 6

Объект БД «Клиент»

код клиента

фамилия клиента

имя клиента

отчество клиента

серия и номер паспорта РФ

дата выдачи паспорта РФ

учреждение, выдавшее паспорт РФ

серия и номер загранпаспорта

дата выдачи загранпаспорта

учреждение, выдавшее загранпаспорт

дата окончания срока действия загранпаспорта

дата рождения клиента

пол клиента

образование клиента

место работы

адрес

основной номер телефона

, дополнительный номер телефона

e-mail

Таблица 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

Дата_договора

дата/время

фиксированный

Наличие_страховки

логический

Стоимость_лечения

денежный

фиксированный

Доля_торг_надбавки_в_цене_путевки

процентный

фиксированный

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]