Автор: Пользователь скрыл имя, 04 Декабря 2011 в 12:00, курсовая работа
Туристическая компания предоставляет свои услуги по обеспечению отдыха клиентам на определённый период времени на предлагаемых компанией курортах на территории различных стран. Предлагается рассмотреть типичную туристическую компанию, предоставляющую свои услуги клиентам на наиболее популярных курортах в различных странах мира.
1 Анализ предметной области…………………………………………………2
1.1 Функциональная структура……………….…………………………………4
1.2. Диаграмма потоков данных…………………………………………………5
1.3. Выделение информационных объектов и их атрибутов…………………..8
2 Концептуальная модель……………………………………………………...9
3 Логическое моделирование…………………………………………………13
3.1 Построение логической модели………………………………………..…..13
3.2 Нормализация отношений………………………………………………….13
3.3 Целостность данных…………………………………………………….….19
3.3.1 Целостность объекта……………………………………………………..19
3.3.2 Целостность приложения………………………………………………..19
3.3.3 Ссылочная целостность……………………………………………….…20
4 Выбор СУБД.....................................................................................................21
5 Физическая модель………………………………………………….………22
6 Проектирование и реализация информационной системы …………...23
Описание средств, использованных при реализации…………………....23
6.2 Тексты SQL-запросов и результаты их выполнения…………………….24
7 Заключение………………………………………………………….…….…36
8 Список литературы ……………………………………………………...…36
9 Приложение A Макетные данные …….
3.3.3 Ссылочная целостность
Ссылочная целостность отражает взаимосвязь между значениями атрибутов, входящих в разные таблицы – родительские и дочерние
Ограничения
ссылочной целостности
Требования к родительскому ключу – уникальность, либо неопределённость, поэтому в качестве родительского ключа выбирается либо первичный ключ, либо потенциальный ключ.
Значения внешнего ключа должны совпадать с одним из значений родительского ключа, либо должны быть неопределёнными. Значения внешнего ключа могут повторяться в различных картежах дочерней таблицы (конечно, если это поле не является первичным ключом для этой таблицы).
Таким образом, значения ссылочной целостности защищают базу данных от ошибок, связанных с вставкой, удалением и обновлением данных.
Например, в нашу базу данных в таблицу «DistributionPass» нельзя занести информацию о новом клиенте без внесения данных об этом клиенте в таблицу «Klient», т.к. отношение «Klient» является родительским для отношения «DistributionPass». А в таблицу «Pass» нельзя внести информацию о работнике, которого нет в отношении «WorkerPersonner» (т.е. нельзя назначить на путёвку гида, если он не существует в данной компании).
Такая же ситуация обстоит и с удалением и обновлением картежей в отношениях.
Например, нельзя удалить картеж из отношения «Hotels», так как у него имеется потомок – отношение «DistributionPass», а если возникает необходимость удаления, то соответствующие картежи необходимо удалить и из всех дочерних отношений.
Аналогичная связь прослеживается и в других отношениях.
4 Выбор СУБД
Для реализации базы данных «Туристическая компания» я выбрала СУБД Oracle 10g . Это объясняется следующими возможностями данной СУБД:
5. Физическая модель
Физическая модель данных представлена реляционными таблицами, в которых в виде кортежей реляционных отношений хранится информация. Для хранения информации выбраны Oracle 10g таблицы, как удобные в работе и распространенные. Таблицы Oracle 10g поддерживают многие приложения, что обеспечивает более высокую универсальность системы.
Таблица 5.1Типы данных
Тип | Наименование типа | Размер(байты) | Содержание |
Текстовый | varchar | каждый символ по 1 | Буквы, цифры, спец. символы(%, &, #) |
Числовой | integer | 4 | Планируется выполнять арифме тические операции над значениями из этого поля |
Денежный | integer | 8 | Числовое поле, содержимое которого изображается с дробной частью и денежным символом |
Дата | date | 8 | Даты до 31 декабря 9999 года |
Для создания таблицы «Klient» мы использовали следующие скрипты:
CREATE TABLE klient
(
idklient varchar2(40) primary key not null,
FIO varchar2(40) unique,
NumberRusPassport integer,
NumberForeignPassport integer,
DateBirths date,
Phone integer,
NumberCount integer
)
Для создания таблицы «Pass»:
CREATE TABLE Pass
(
idPass integer PRIMARY KEY NOT NULL,
Class varchar(20) CHECK (Class IN('ВЫСШИЙ',
'НИЗШИЙ')),
Duration integer,
Cost integer,
idWorkerPersonner varchar(20),
FOREIGN KEY (idWorkerPersonner)REFERENCES WorkerPersonner)
Для создания таблицы «DistributionPass»:
CREATE TABLE DistributionPass
(
idDistributionPass integer PRIMARY KEY NOT NULL,
idklient varchar2(40) unique not null,
idpass integer,
idHotels integer,
DateDeparture integer,
idTransportationCompany integer,
FOREIGN KEY (idklient)REFERENCES klient,
FOREIGN KEY (idpass)REFERENCES pass,
FOREIGN KEY (idHotels)REFERENCES Hotels,
FOREIGN KEY (idTransportationCompany)
)
Для создания таблицы «Countries»:
CREATE TABLE Countries
(
idCountries integer PRIMARY KEY NOT NULL,
Name varchar2(40) unique not null,
idCurrency integer,
FOREIGN KEY (idCurrency)REFERENCES Currency
)
Для
создания таблицы «TransportationCompany» мы использовали
следующие скрипты:
CREATE TABLE TransportationCompany
(
idTransportationCompany integer PRIMARY KEY NOT NULL,
Name varchar2(40),
LegalAddress varchar2(40),
NumberLicenses integer NOT NULL,
Fax integer NOT NULL
)
Для создания таблицы «Hotels»:
CREATE TABLE Hotels
(
idHotels integer PRIMARY KEY NOT NULL,
Name varchar2(40) unique not null,
Address varchar2(40),
Phone integer,
Fax integer,
LevelComfort integer,
idResorts varchar2(40),
FOREIGN KEY (idResorts)REFERENCES Resorts
)
Для создания таблицы «WorkerPersonner»:
CREATE TABLE WorkerPersonner
(
idWorkerPersonner varchar2(40) PRIMARY KEY NOT NULL,
idResorts varchar2(40),
FIO varchar2(40),
DateAcceptare integer,
Phone integer,
FOREIGN KEY (idResorts)REFERENCES Resorts)
Для создания таблицы «Currency»:
CREATE TABLE Currency
(
idCurrency integer PRIMARY KEY NOT NULL,
Names varchar2(40) unique not null,
ExchangeCourse integer
)
6 Проектирование и реализация информационной системы
6.1 Описание средств, использованных при реализации
1 Создание базы данных.
Для создания базы данных, сначала создаются таблицы с помощью средств, предлагаемых СУБД Oracle 10g :
При создании таблиц был использован 1-й вариант, как наиболее удобный из всех предлагаемых. Сначала создаётся каркас таблицы, отмечаются ключевые поля, устанавливаются типы данных для каждого поля, а уже потом таблицы заполняются макетными данными (приведены в приложении A).
После
того, как таблицы созданы, необходимо
их связать по ключевым полям.
2 Создание запросов
Уже на данном этапе можно сформулировать достаточно большое количество запросов, которые понадобятся в дальнейшем при создании форменного приложения.
При
создании запроса в СУБД Oracle 10g был
использован режим SQL . Это объясняется
удобством и простотой языка SQL, который
представляет достаточно богатый набор
средств для формирования запросов.
6.2 Тексты SQL-запросов и результаты их выполнения
Ниже приведены все SQL-запросы, использованные в процессе создания информационной системы.
Запрос
1.
Вывести информацию о клиенте по номеру
российского паспорта «2490443355».
SELEСT t. FIO AS ФИО_Клиента, t.NumberForeignPassport AS Номер_заграничного_паспорта, t.DateBirths AS Дата_рождения, t.NumberCount AS Номер_банковского_счёта
From klient t
WHERE NumberRusPassport='2490443355'
Результат запроса:
Klient | |||
ФИО_Клиента | Номер_заграничного_паспорта | Дата_рождения | Номер_банковского_счёта |
Фролов Константин Николаевич | 7768787888 | 16.12.1961 | 6457235342534545 |
Запрос 2. Вывести информацию о клиенте под номером 10.
SELECT t.idklient AS № t. FIO AS ФИО_Клиента, t. NumberRusPassport AS №русс.паспорта, t.NumberForeignPassport AS №загран.паспорта, t.DateBirths
AS Дата_рождения, t.NumberCount AS Номер_банк.счёта
FROM klient t
WHERE idklient=10;
Результат запроса:
Klient | ||||||
№ |
ФИО_Клиента | №русс.паспорта |
№загран.паспорта | Дата_рождения | №банк._счёта | |
10 | Евсеев
Андрей Иванович |
3109421060 | 7786545667 | 24,04,1957 | 6457235342534545 |
Запрос 3. Вывести информацию о клиенте по Ф.И.О. «Путин Владимир Владимирович».
SELECT t.NumberRusPassport AS Номер_российского_паспорта, t.NumberForeignPassport AS Номер_заграничного_паспорта, t.DateBirths AS Дата_рождения, t.NumberCount AS Номер_банковского_счёта
FROM klient t
WHERE ((FIO)='Путин Владимир Владимирович')
Результат запроса:
Klient | |||
Номер_росс.паспорта | Номер_загран.паспорта | Дата_рождения | Номер_банк._счёта |
2195349528 | 8786765546 | 14.06.1954 | 3214235435656346 |
Информация о работе Проектирование и реализация информационной системы. Туристическая компания