Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5fan_ru_Автоматизированная система управления д...doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
9.4 Mб
Скачать

3.4 Описание логической и физической модели данных

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

На основании анализа входных и выходных данных предметной области опишем атрибуты сущностей, а также определим ключи: первичный - PK, внешний – FK (Таблица 3.2).

Таблица 3.2 – Определение ключей и принадлежность к типам

Имя сущности

Атрибуты

Тип

Примеры значений

1

2

3

4

Договор

Код договора (PK)

integer

{1, 2, 3, …}

Статус

integer

{1, 2, 3, …}

Номер договора с туристом

Varchar (10)

{1, 2, 3, …}

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

Datetime (GetDate())

{01.01.09,…}

№ туроператора(FK)

integer

{1, 2, 3, …}

Номер БСО

Varchar (10)

{1, 2, 3, …}

Дата оплаты

Datetime

{01.01.09,…}

дата начала тура

datetime

{01.01.09,…}

дата окончания тура

datetime

{01.01.09,…}

дополнительные услуги(FK)

integer

{1,2,3…}

общая стоимость

integer

{10 000,…}

медицинская страховка(FK)

integer

{1,2,3…}

Код типа тура (FK)

integer

{1,2,3…}

Кредит

bit

Да/нет

Заявка

№ заявки (PK)

integer

{1, 2, 3, …}

Статус(FK)

integer

{1, 2, 3, …}

Дата начала отдыха

datetime

{01.01.09,…}

Дата окончания отдыха

datetime

{01.01.09,…}

Дата поступления заявки

datetime GetDate()

{01.01.09,…}

Дополнительная информация

varchar(100)

{первая линия моря,…}

Количество человек

integer

{1, 2, 3, …}

Продолжение таблицы 3.2

1

2

3

4

Заявка

Маршрут отдыха

varchar(100)

{Турция Анталия отель Hilton 3*, …}

Дети

integer

{1, 2, 3, …}

Номер туриста(FK)

integer

{1, 2, 3, …}

Желаемая стоимость путевки ДО

money

{10 000,15 000…}

Желаемая стоимость путевки ОТ

money

{20 000,…}

Тип тура

Номер типа тура (РK)

integer

{1,2,3…}

Страна

varchar(30)

{Турция, Египет}

Город

varchar(30)

{Анталия , Кемер, }

категория места размещения (FK)

integer

{1,2,3…}

Место размещения (FK)

integer

{1,2,3…}

перевозка(FK)

integer

{1,2,3…}

питание(FK)

integer

{1,2,3…}

экскурсии(FK)

integer

{1,2,3…}

Турист

Номер туриста (PK)

integer

{1,2,3…}

Фамилия

varchar(35)

{Вихляева,…}

Имя

varchar(25)

{Екатерина,…}

Отчество

varchar(25)

{Андреевна,…}

№ паспорта российского

varchar(4)

{653731,…}

серия паспорта российского

varchar(6)

{3302}

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

varchar(10)

{3302 653731,…}

Адрес(FK)

integer

{9021234567,…}

Дата рождения

datetime

{01.01.09,…}

Контактный телефон

integer

{9021234567,…}

№ клубной карты

varchar(8)

{00001111,…}

Продолжение таблицы 3.2

1

2

3

4

Турист

ICQ

varchar(9)

{591234567,…}

e-mail

varchar(50)

{r@mail.ru,…}

Реклама (FK)

Integer

{1,2,..}

Туроператор

Номер туроператора(PK)

Integer

{1,2,3…}

№ агентского договора

varchar(20)

{1,2,3…}

Дата агентского договора

datetime

{01.01.09,…}

полное наименование

varchar(100)

{Coral-travel,…}

сокращенное наименование

varchar(20)

{Корал,…}

юридический адрес(FK)

integer

{1,2,3…}

адрес местонахождения (FK)

Integer

{1,2,3…}

Сайт

varchar(50)

{www.tour.ru,…}

электронный адрес

varchar(50)

{name@name.ru,…}

телефон

varchar(10)

{4951234567,…}

№ договора страхования

varchar(20)

{09480В6000890,…}

размер финансового обеспечения

varchar(10)

{10 000 000,…}

реестровый номер

varchar(12)

{ВТ 011809,…}

Логин

varchar(20)

{Alparus,…}

Пароль

varchar(20)

{ВТ011809,…}

Код страх. орг(FK)

Integer

{1, 2, 3, …}

Тип номера

Номер типа номера(PK)

integer

{1,2,3…}

Название

varchar(5)

{DBL, SNGL…}

Английской название

varchar(5)

{Single…}

расшифровка

varchar(50)

{Одноместный,…}

Продолжение таблицы 3.2

1

2

3

4

Страховая организация

Код страховой организации(PK)

integer

{1, 2, 3, …}

Наимен орг-и фин обеспечения

varchar(100)

{Ингосстрах,…}

Адрес орг-и фин обеспечения(FK)

integer

{1,2,3.…}

Дата договора страхования

datetime

{01.01.09,…}

срок договора страхования

datetime

{01.01.09,…}

Тип питания

Номер типа питания(PK)

integer

{1,2,3…}

Название

varchar(5)

{ALL…}

расшифровка

varchar(50)

{все включено,…}

Английское название

varchar(20)

{ALL Inclusive,…}

Реклама

Номер вида рекламы(PK)

integer

{1,2,3…}

Название рекламы

varchar(50)

{радио, ТВ,…}

Доп услуги

Номер доп услуги(PK)

integer

{1,2,3…}

Название доп.услуги

varchar(50)

{такси, телефон в номере …}

Номер мнения (PK)

integer

{1,2,3…}

Мнение

Мнение

varchar(50)

{хорошо! …}

Код тура(FK)

integer

{1,2,3…}

Вид страховки

Номер страховки(PK)

integer

{1,2,3…}

Название страховки

varchar(50)

{медицинская, …}

Тип адреса

Номер типа адреса(PK)

integer

{1,2,3…}

Название типа

varchar(15)

{город, край, область}

Данные адреса

Номер (PK)

integer

{1,2,3…}

Название

varchar(20)

{Чайковский, …}

Родитель

integer

{1,2,3…}

Код типа адреса (FK)

integer

{1,2,3…}

Продолжение таблицы 3.2

11

2

3

4

Место размещения

Номер (PK)

integer

{1,2,3…}

Название места размещения

varchar(50)

{Hotel Hilton 3 * …}

Перевозка

Номер (PK)

integer

{1,2,3…}

Название перевозки

varchar(50)

{Москва-Анталия-Москва …}

Экскурсии

Номер (PK)

integer

{1,2,3…}

Название экскурсии

varchar(50)

{нет, обзорная …}

Статус

Номер статуса(PK)

integer

{1,2,3…}

Наименование

varchar(50)

{нет оплаты.,…}

Адрес

Код адреса (PK)

integer

{1,2,3…}

Индекс

varchar(6)

{617760, …}

Код города (FK)

integer

{1,2,3…}

Код улицы (FK)

integer

{1,2,3…}

Номер дома

varchar(5)

{1,2,3…}

Номер квартиры

varchar(5)

{1,2,3…}

Физическая модель данных представлена в Таблице 3.3 следующим образом:

Таблица 3.3 – Физическая модель данных

Имя сущности

Атрибуты

Тип

Примеры значений

1

2

3

4

Dogovor

id_dog (PK)

integer

{1, 2, 3, …}

N_dog_turist

Varchar (10)

{1, 2, 3, …}

Date_dog_turist

Datetime (GetDate())

{01.01.09,…}

id_operator(FK)

integer

{1, 2, 3, …}

Продолжение таблицы 3.3

1

2

3

4

Dogovor

N_BSO

Varchar (10)

{1, 2, 3, …}

date_opl

Datetime

{01.01.09,…}

credit

bit

Да/нет

Sum

money

{10 000,…}

Date_begin

datetime

{01.01.09,…}

Date_end

datetime

{10.01.09,…}

id_typetour (FK)

integer

{1,2,3…}

Insurance(FK)

integer

{1,2,3…}

status(FK)

integer

{1,2,3…}

touristdog

id

integer

{1, 2, 3, …}

id_turist (FK)

integer

{1, 2, 3, …}

id_dog(FK)

integer

{1, 2, 3, …}

Zayavka

id_zayavka (PK)

integer

{1, 2, 3, …}

status

integer

{1, 2, 3, …}

Z_date

datetime

{01.01.09,…}

Z_date_end

datetime

{01.01.09,…}

Z_date_begin

datetime GetDate()

{01.01.09,…}

Z_deti

integer

{1,2,3…}

Dop_info

varchar(100)

{первая линия моря,…}

Z_kol_men

integer

{1, 2, 3, …}

Z_marshrut

varchar(100)

{Турция Анталия отель Hilton 3*, …}

N_turist (FK)

integer

{1, 2, 3, …}

Z_sum_ot

money

{10 000,15 000…}

Z_sum_do

money

{20 000,…}

Продолжение таблицы 3.3

1

2

3

4

typetour

id_typetour (РK)

integer

{1,2,3…}

City(FK)

integer

{1,2,3…}

type_placing(FK)

integer

{1,2,3…}

Placing(FK)

integer

{1,2,3…}

Transport(FK)

integer

{1,2,3…}

Food(FK)

integer

{1,2,3…}

Excursion(FK)

integer

{1,2,3…}

Turist

id_turist (PK)

integer

{1,2,3…}

Surname

varchar(35)

{Вихляева,…}

Name

varchar(25)

{Екатерина,…}

Secondname

varchar(25)

{Андреевна,…}

N_pasport_rus

varchar(6)

{ 653731,…}

seriaruspas

varchar(4)

{ 6537,…}

N_pasport_zagr

varchar(10)

{3302 653731,…}

Birthday date

datetime

{01.01.09,…}

N_club_kart

archar(8)

{00001111,…}

e-mail

varchar(50)

{r@mail.ru,…}

id_rekl

Integer

{1,2,3…}

Id_adres (FK)

Integer

{1,2,3…}

ICQ

varchar(9)

{591234567,…}

Insurianse

id_ins (PK)

integer

{1, 2, 3, …}

Name_ins

varchar(100)

{Ингосстрах,…}

addressins(FK)

varchar(150)

{г.Чайковский, ул. Ленина, д1.кв1.…}

Srok_dogins

datetime

{01.01.09,…}

Date_dog_ins

datetime

{01.01.09,…}

Продолжение таблицы 3.3

1

2

3

4

operator

id_operator (PK)

Integer

{1,2,3…}

N_agent_dog

varchar(20)

{1,2,3…}

Date_agent_dog

datetime

{01.01.09,…}

All_name

varchar(100)

{Coral-travel,…}

Sokr_name

varchar(20)

{Корал,…}

Post_address(FK)

Integer

{1,2,3…}

Ur_adres(FK)

Integer

{1,2,3…}

Site

varchar(50)

{www.tour.ru,…}

E_mail

varchar(50)

{name@name.ru,…}

Op_telephone

varchar(12)

{4951234567,…}

N_dogins

varchar(20)

{09480В6000890,…}

Financial_obesp

Money

{10 000 000,…}

N_reestr

varchar(12)

{ВТ 011809,…}

id_ins (FK)

Integer

{1, 2, 3, …}

Login

varchar(30)

{abcdef,…}

Password

varchar(20)

{bkd54,…}

Nomera

id_razm (PK)

integer

{1,2,3…}

name_razm

varchar(5)

{DBL, SNGL…}

englishname

varchar(30)

{single}

rashifrovka

varchar(50)

{Одноместный,…}

reklama

id_rek(PK)

integer

{1,2,3…}

name_rek

varchar(50)

{радио, ТВ,…}

Food

id_food(PK)

integer

{1,2,3…}

type_food

varchar(5)

{ALL…}

name

varchar(50)

{все включено,…}

englishname

varchar(20)

{ALL Inclusive,…}

Продолжение таблицы 3.3

1

2

3

4

dop_usl

id_dop(PK)

integer

{1,2,3…}

name_dop

varchar(50)

{такси, телефон в номере …}

Insur

id_ins(PK)

integer

{1,2,3…}

name_ins

varchar(50)

{медицинская, …}

Adrtype

id_adrtype(PK)

integer

{1,2,3…}

name

varchar(15)

{город, край, область}

adrdata

id_adr (PK)

integer

{1,2,3…}

name

varchar(20)

{Чайковский, …}

parent

integer

{1,2,3…}

id_type (FK)

integer

{1,2,3…}

adres

id_adres (PK)

integer

{1,2,3…}

index

varchar(6)

{617760, …}

id_city(FK)

integer

{1,2,3…}

Id_street(FK)

integer

{1,2,3…}

N_house

varchar(5)

{6А,2,3…}

N_korpus

varchar(5)

{1,2,3…}

N_flat

varchar(4)

{1,2,3…}

hotel

Id_hotel (PK)

integer

{1,2,3…}

Namehotel

varchar(50)

{Hotel Hilton 3 * …}

Mnenie

id_mnenie(PK)

integer

{1,2,3…}

mnenie

varchar(50)

{хорошо! …}

id_tour(FK)

integer

{1,2,3…}

Ex

Id_ex (PK)

integer

{1,2,3…}

nameex

varchar(50)

{да, нет, обзорная …}

Dopdog

Id_dop(FK)

integer

{1,2,3…}

Id_dog(FK)

integer

{1,2,3…}

Продолжение таблицы 3.3

1

2

3

4

Transport

Id_transport (PK)

integer

{1,2,3…}

nametransp

varchar(50)

{Москва-Анталия-Москва …}

status

id_status

integer

{1,2,3…}

namestat

varchar(20)

{нет оплаты …}

Структура логической и физической модели отображена в Приложении Г.

В нашей модели предусмотрим следующие ограничения целостности:

а) правило на поле:

дата поступления заявки, дата заключения договора, дата оплаты тура – принимают текущую дату по умолчанию, но возможно ее редактирование;

количество человек в таблице «Заявка» не могут принимать значения равные 0;

Общая стоимость тура не может принимать значения равные 0.

б) правило на запись:

дата поступления заявки не может быть меньше даты начала отдыха;

дата заключения договора не может быть меньше даты начала отдыха;

дата начала отдыха не может быть больше даты окончания отдыха;

дата начала тура не может быть больше даты окончания тура;

дата оплаты отдыха не может быть больше даты начала отдыха;

опишите в терминах «раньше-позже»

предполагаемая стоимость путевки ОТ не может быть больше предполагаемой стоимости путевки ДО;

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

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

Возможные значения по умолчанию:

количество человек равно 2;

дата поступления заявки, дата заключения договора, дата оплаты тура – принимают текущую дату по умолчанию, но возможно ее редактирование.