Создание базы данных авиаперевозок

Выявление проблем авиаперевозок в современных условиях. Создание клиентского приложения; разработка многопользовательской системы, предназначенной для поиска и заказа билетов на авиарейсы. Хранилище данных и описание отчетов, Sql-скрипт базы данных.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 16.06.2013
Размер файла 2,2 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

"САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ"

Курсовой проект

"Создание базы данных авиаперевозок"

по дисциплине: Распределенные базы данных

Пятигорск

2011

Содержание

  • Введение
  • 1. Описание предметной области
  • 2. Требования к системе
  • 3. Концептуальная модель базы данных
  • 4. Физическая модель базы данных
    • 4.1 Хранимые процедуры
    • 4.2 Триггеры
    • 4.3 Индексы
    • 4.4 Ограничения целостности
  • 5. Интерфейс пользователя
  • 6. Репликация данных
    • 6.1 Описание схемы репликации
    • 6.2 Способ организации репликации данных
  • 7. Хранилище данных
  • 8. Описание отчётов
    • 8.1 Sql скрипт базы данных
    • 8.2 Код c#
  • Заключение
  • Список использованной литературы

Введение

Целью данного курсового проекта была разработка теоретических и практических подходов к авиаперевозкам.

Поставленная цель определяет задачи исследования:

1. Выявить основную проблему Авиаперевозок в современных условиях.

2. Показать пути решения выявленных проблем и сделать расчёт путей их решения.

Задача ставилась в создании клиентского приложения, а также разработки многопользовательской системы, предназначенной для поиска и заказа билетов на авиарейсы. В созданном приложении, каждому пользователю должна предоставляться возможность найти интересующие его рейсы, получить информацию о времени вылета и прибытия, данных авиакомпании обслуживающей данный рейс, а также возможность сделать заказ определенного количества билетов на выбранный рейс. Так же, система должна предоставлять администратору системы интерфейс для её сопровождения.

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

1. Исследовать предметную область.

2. Построить концептуальную модель предметной области.

3. Построить даталогическую модель организации данных.

4. Реализовать базу данных посредством MS SQL Server 2008.

5. Реализовать соответствующее приложение на Windows посредоством языка C#.

6. Произвести развертывание и тестирование системы.

Работа состоит из введения, глав основной части, выводов (заключения), списка литературы и приложений.

В разделе "Описание предметной области" наглядно показана суть проблемы "авиаперевозок". Показаны наиболее важные механизмы работы "Покупок авиабилетов"

В разделе "Заключение" описаны Выводы, Рекомендации и Итоги выполненной работы.

Наиболее важными источниками при проектировании проекта были

1. Русская Википедия

2. Атре Ш. Структурный подход к организации баз данных.

3. Интуит. Введение в WPF.

Результатом выполнения работы является приложение, которое позволяет просматривать и модифицировать информацию о самолётах, аэропортах, рейсах и создавать отчёт в формате CSV.

1. Описание предметной области

Среда функционирования системы включает область действий компании, в пределах которой она функционирует.

Объект управления - заказы клиентов.

Субъект управления (управляющая система). Субъект управления представляет собой совокупность действий фирмы направленных на обслуживание клиентов, в пределах среды функционирования.

При обращении клиента в компанию, формируется задача на основе его требований. Данные клиента при обращении в компанию заносятся, и по ним формируется "банк памяти". Для возобновления работы, любая задача может быть восстановлена из архива.

Основной целью управления является хранение всей информации, которая находится в базе.

Состав и содержание работ по созданию системы:

1.Создание графического интерфейса.

2.Создание распределённых БД.

3.Разработка программы.

4.Заполнение БД.

5.Тестирование программы.

6.Описание программных средств.

7.Разработка программной документации.

8.Настройка приложения.

2. Требования к системе

Программа выполняет следующие требования:

1. Хранение информации о проведённых заказах.

2. Обработка хранимых данных на сервере.

3. Простой быстрый ввод/вывод данных из базы данных.

Система осуществляет следующие операции:

1. Покупка/ Продажа билета.

2. Поиск билетов по заданным критериям.

Система предназначена:

1. Сотрудников компании.

2. Для IT-специалистов.

3. Для системного администратора.

4. Для конечных потребителей продукта.

Надёжность системы обеспечена правильностью вводимых данных пользователя. В случае неправильно введённых данных, всю вину пользователь берет на себя.

Таблица 1. Требования к программной и аппаратной совместимости

Системные требования

Минимальные

Рекомендуемые

Процессор

2.0Ghz

3.0Ghz

ОЗУ

512mb

512mb

ОС

Windows XP SP3

Windows Vista

Видеокарта

128 mb

256 mb

.net framework

4.0

4.0

Требования к транспортировке и хранению:

1. Система не должна транспортироваться на физическом носителе.

2. Транспортировка данных может быть проведена лишь через сеть интернет.

3. Система должна храниться на ЖД ЭВМ.

4. Условия хранения системы на НГМД должны соответствовать условиям хранения НГМД, требования к которым предъявляются в эксплуатационной документации НГМД.

Порядок контроля и приёмки системы:

1. Контроль осуществляется Исполнителем системы.

2. Заказчик не имеет права вносить изменения в код программы, либо другими способами причинять вред ПО или не соответствовать подписанному договору.

3. Состав документации определяется Заказчиком и согласовывается с Исполнителем.

3. Концептуальная модель базы данных

Рис. 1. Концептуальная модель (Часть 1)

Рис. 2. Концептуальная модель (Часть 2)

Из рисунка 1 и 2 видно, что в системе реализованы следующие сущности: Самолет, клиент, билет, расписание рейса, авиакомпания и др.

Каждая сущность включает в себя различные данные: название авиакомпании, модель, дату и время отправления, продолжительность полета, пункт назначения, цены на билеты каждого класса, количество свободных мест каждого класса и прочее. Так же в базе данных хранится информации о количестве свободных мест первого и второго класса на заданный рейс. На этапе концептуального проектирования использовалась модель "сущность-связь". Как видно из рисунка 1 и 2, в предметной области выделено 18 сущностей: среди них - пользователи (users), заказы (orders), рейсы (flights), города (cities), самолеты (aircrafts) и авиакомпании (companies).

4. Физическая модель базы данных

Рис. 4. Физическая модель

4.1 Хранимые процедуры

Система предоставляет возможность просмотра заказов пользователя на выбранный рейс. В этом случае запрос осуществляется по идентификатору пользователя и рейса.

Если текущий пользователь имеет администраторские права, то он может просмотреть как заказы конкретного пользователя, так и все заказы на определенный рейс. В этом случае запрос осуществляется по идентификатору рейса.

При внесении изменений в рейс, на передаваемые параметры накладываются те же ограничении, что и при добавлении рейса.

Выбор Российских пользователей

-- ================================================

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

-- =============================================

-- Author:<Author,,Name>

-- Create date: <Create Date,,>

-- Description:<извлекаем информацию о русских клиентах >

-- =============================================

CREATE PROCEDURE SelectRussian

-- Add the parameters for the stored procedure here

@Russian text

AS

BEGIN

-- SET NOCOUNT ON added to prevent extra result sets from

-- interfering with SELECT statements.

SELECT [ID КЛИЕНТА] from [КЛИЕНТ] Where [ЯЗЫК] Like @Russian

END

GO

Добавление пользователя

CREATE PROCEDURE InsUser

@login text,

@password text,

@email text

AS

BEGIN

INSERT ПОЛЬЗОВАТЕЛЬ

(LOGIN, PASSWORD, EMAIL)

VALUES

(@login, @password, @email)

END

4.2 Триггеры

Запрета попытки подключения к SQL Server в качестве члена login_ admin, если под этой учётной записью уже запущен 1 сеанс.

CREATE LOGIN login_admin WITH PASSWORD = 'Admin' MUST_CHANGE,

CHECK_EXPIRATION = ON;

GO

GRANT VIEW SERVER STATE TO login_admin;

GO

CREATE TRIGGER connection_limit_admin_trigger

ON ALL SERVER WITH EXECUTE AS 'login_admin'

FOR LOGON

AS

BEGIN

IF ORIGINAL_LOGIN()= 'Admin' AND

(SELECT COUNT(*) FROM sys.dm_exec_sessions

WHERE is_user_process = 1 AND

original_login_name = 'Admin') > 1

ROLLBACK;

END;

Запрет взятия багажа, если он превышает 15 кг:

USE [Aviatickets]

GO

/****** Object: Trigger [dbo].[MnogoVeschey] Script Date: 04/13/2012 14:26:51 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

-- =============================================

ALTER TRIGGER [dbo].[MnogoVeschey]

ON [dbo].[БАГАЖ]

AFTER INSERT

AS

BEGIN

SET NOCOUNT ON;

if (select [ОБЪЕМ ГРУЗА] from inserted)>'15'

rollback

print'Вы не можете вставлять запись с менее 15'

END

4.3 Индексы

При разработке были использованы все виды индексов:

1. Не кластерные индексы.

2. Уникальные индексы.

3. Кластерные индексы.

4. Не уникальные индексы.

4.4 Ограничения целостности

В программе существует ограничение целостности данных. ON DELETE NO ACTION. При попытке удалить строку с ключом, на которую ссылаются внешние ключи в строках других таблиц, происходит сообщение об ошибке и строка не удаляется. Ограничение настраиваются автоматически для каждого столбца. А при неправильной инструкции DELETE выполняется откат к предыдущему состоянию.

5. Интерфейс пользователя

Интерфейс программы написан с использованием технологии Windows Presentation Foundation. Это система для построения Windows приложений с визуально привлекательными возможностями взаимодействия с пользователем, графическая (презентационная) подсистема в составе .NET Framework (начиная с версии 3.0), имеющая прямое отношение к XAML.

Рис. 5. Главное окно программы

Рис. 7. Поиск по Базе Данных

Рис. 6. Окно работы администратора системы

Рис. 9. Форма проверки данных

Рис. 10. Форма заполнения данных клиента

6. Репликация данных

Репликация организована между двумя базами данных, расположенными на двух серверах. Существует два основных подразделения, в той или иной мере использующие в работе данную систему.

Главное подразделение, функциями которого являются приём и регистрация заказов клиентов. В распоряжении находится только информация о заказах.

Второе - осуществляет выплату заработной платы, и использует систему в полном объёме.

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

6.1 Описание схемы репликации

Схема репликации достаточно проста. Имеется один издатель и дистрибьютор и несколько подписчиков. Подписчиками могут выступать любое ЭВМ устройство подключённое к интернету: Персональный компьютер, ноутбук или КПК.

Рис. 11. Описание схемы репликации

6.2 Способ организации репликации данных

Описание схемы и способа организации репликации данных в территориально распределённых БД в направлениях:

Центральный офис Филиал (Мобильный клиент)

Филиал (Мобильный клиент) Центральный офис

7. Хранилище данных

Система включает:

1. Информационные источники: оперативные базы данных (базы данных OLTP-систем), "плоские" файлы с наборами данных, внешние источники (например, информационные источники глобальных вычислительных сетей).

2. Средства трансформации и загрузки данных в хранилище (процедуры загрузки, созданные на языке сервера хранилища данных).

3. Сервер хранилища данных.

4. Клиентские рабочие места аналитиков и/или средства разработки аналитических приложений.

Рис. 12. Схема хранилища данных

Измерения в модели хранилища данных иерархические. Используемая схема структуры реляционной базы данных построена по схеме "звезда". Т.е. имеется одна большая таблица фактов, представляющая собой соединение таблиц, содержащих сведения по различным измерениям, связанные с несколькими небольшими по размерности справочными таблицами.

Хранилище данных было спроектировано помощью технологии ROLAP. В отличие от OLAP, хранилища создаваемые по технологии ROLAP, базируются на реляционной модели данных, при этом база данных имеет денормализованую структуру.

Рис. 13. Концептуальная модель хранилища данных

На рис. 13. приведён пример структуры реляционной базы данных, построенной по схеме "звезда". Здесь таблица с информацией о продажах билета связана с четырьмя таблицами - измерениями (сервис, рейс, регион, клиент).

8. Описание отчётов

8.1 SQL Скрипт базы данных

CREATE DATABASE Aviatickets

ON

PRIMARY

( NAME = Aviatickets1,

FILENAME = "c:\Aviatickets.mdf",

SIZE = 5MB,

MAXSIZE = 10,

FILEGROWTH = 2),

( NAME = Aviatickets2,

FILENAME = "c:\Aviatickets.ndf",

SIZE = 5MB,

MAXSIZE = 10,

FILEGROWTH = 2)

LOG ON( NAME = Aviaticketslog,

FILENAME = "c:\Aviatickets.ldf",

SIZE = 5MB,

MAXSIZE = 10,

FILEGROWTH = 2)

/*==============================================================*/

/* DBMS name: Microsoft SQL Server 2008 */

/* Created on: 24.03.2012 21:19:48 */

/*==============================================================*/

IF EXISTS (SELECT 1

FROM SYS.SYSREFERENCES R JOIN SYS.SYSOBJECTS O ON (O.ID = R.CONSTID AND O.TYPE = 'F')

WHERE R.FKEYID = OBJECT_ID('АВИАКОМПАНИЯ') AND O.NAME = 'FK_АВИАКОМП_АВИАКОМПА_САМОЛЕТ')

ALTER TABLE АВИАКОМПАНИЯ

DROP CONSTRAINT FK_АВИАКОМП_АВИАКОМПА_САМОЛЕТ

go

IF EXISTS (SELECT 1

FROM SYS.SYSREFERENCES R JOIN SYS.SYSOBJECTS O ON (O.ID = R.CONSTID AND O.TYPE = 'F')

WHERE R.FKEYID = OBJECT_ID('"АДРЕС НАЗНАЧЕНИЯ"') AND O.NAME = 'FK_АДРЕС НА_АДРЕС НАЗ_МЕСТО')

ALTER TABLE "АДРЕС НАЗНАЧЕНИЯ"

DROP CONSTRAINT "FK_АДРЕС НА_АДРЕС НАЗ_МЕСТО"

go

IF EXISTS (SELECT 1

FROM SYS.SYSREFERENCES R JOIN SYS.SYSOBJECTS O ON (O.ID = R.CONSTID AND O.TYPE = 'F')

WHERE R.FKEYID = OBJECT_ID('"АДРЕС ОТПРАВЛЕНИЯ"') AND O.NAME = 'FK_АДРЕС ОТ_АДРЕС ОТП_МЕСТО')

ALTER TABLE "АДРЕС ОТПРАВЛЕНИЯ"

DROP CONSTRAINT "FK_АДРЕС ОТ_АДРЕС ОТП_МЕСТО"

go

IF EXISTS (SELECT 1

FROM SYS.SYSREFERENCES R JOIN SYS.SYSOBJECTS O ON (O.ID = R.CONSTID AND O.TYPE = 'F')

WHERE R.FKEYID = OBJECT_ID('БИЛЕТ') AND O.NAME = 'FK_БИЛЕТ_БИЛЕТ_РЕЙ_РЕЙС')

ALTER TABLE БИЛЕТ

DROP CONSTRAINT FK_БИЛЕТ_БИЛЕТ_РЕЙ_РЕЙС

go

IF EXISTS (SELECT 1

FROM SYS.SYSREFERENCES R JOIN SYS.SYSOBJECTS O ON (O.ID = R.CONSTID AND O.TYPE = 'F')

WHERE R.FKEYID = OBJECT_ID('БИЛЕТ') AND O.NAME = 'FK_БИЛЕТ_БИЛЕТ_СЕР_СЕРВИС')

ALTER TABLE БИЛЕТ

DROP CONSTRAINT FK_БИЛЕТ_БИЛЕТ_СЕР_СЕРВИС

go

IF EXISTS (SELECT 1

FROM SYS.SYSREFERENCES R JOIN SYS.SYSOBJECTS O ON (O.ID = R.CONSTID AND O.TYPE = 'F')

WHERE R.FKEYID = OBJECT_ID('КЛИЕНТ') AND O.NAME = 'FK_КЛИЕНТ_КЛИЕНТ_БИ_БИЛЕТ')

ALTER TABLE КЛИЕНТ

DROP CONSTRAINT FK_КЛИЕНТ_КЛИЕНТ_БИ_БИЛЕТ

go

IF EXISTS (SELECT 1

FROM SYS.SYSREFERENCES R JOIN SYS.SYSOBJECTS O ON (O.ID = R.CONSTID AND O.TYPE = 'F')

WHERE R.FKEYID = OBJECT_ID('ПРОФЕССИЯ') AND O.NAME = 'FK_ПРОФЕССИ_ПРОФЕССИЯ_ЗАРПЛАТА')

ALTER TABLE ПРОФЕССИЯ

DROP CONSTRAINT FK_ПРОФЕССИ_ПРОФЕССИЯ_ЗАРПЛАТА

go

IF EXISTS (SELECT 1

FROM SYS.SYSREFERENCES R JOIN SYS.SYSOBJECTS O ON (O.ID = R.CONSTID AND O.TYPE = 'F')

WHERE R.FKEYID = OBJECT_ID('РЕЙС') AND O.NAME = 'FK_РЕЙС_РЕЙС_АДРЕ_АДРЕС НА')

ALTER TABLE РЕЙС

DROP CONSTRAINT "FK_РЕЙС_РЕЙС_АДРЕ_АДРЕС НА"

go

IF EXISTS (SELECT 1

FROM SYS.SYSREFERENCES R JOIN SYS.SYSOBJECTS O ON (O.ID = R.CONSTID AND O.TYPE = 'F')

WHERE R.FKEYID = OBJECT_ID('РЕЙС') AND O.NAME = 'FK_РЕЙС_РЕЙС_АДРЕ_АДРЕС ОТ')

ALTER TABLE РЕЙС

DROP CONSTRAINT "FK_РЕЙС_РЕЙС_АДРЕ_АДРЕС ОТ"

go

IF EXISTS (SELECT 1

FROM SYS.SYSREFERENCES R JOIN SYS.SYSOBJECTS O ON (O.ID = R.CONSTID AND O.TYPE = 'F')

WHERE R.FKEYID = OBJECT_ID('РЕЙС') AND O.NAME = 'FK_РЕЙС_РЕЙС_РАСП_РАСПИСАН')

ALTER TABLE РЕЙС

DROP CONSTRAINT FK_РЕЙС_РЕЙС_РАСП_РАСПИСАН

go

IF EXISTS (SELECT 1

FROM SYS.SYSREFERENCES R JOIN SYS.SYSOBJECTS O ON (O.ID = R.CONSTID AND O.TYPE = 'F')

WHERE R.FKEYID = OBJECT_ID('САМОЛЕТ') AND O.NAME = 'FK_САМОЛЕТ_САМОЛЕТ_О_ОБСЛУЖИВ')

ALTER TABLE САМОЛЕТ

DROP CONSTRAINT FK_САМОЛЕТ_САМОЛЕТ_О_ОБСЛУЖИВ

go

IF EXISTS (SELECT 1

FROM SYS.SYSREFERENCES R JOIN SYS.SYSOBJECTS O ON (O.ID = R.CONSTID AND O.TYPE = 'F')

WHERE R.FKEYID = OBJECT_ID('САМОЛЕТ') AND O.NAME = 'FK_САМОЛЕТ_САМОЛЕТ_Э_ЭКИПАЖ')

ALTER TABLE САМОЛЕТ

DROP CONSTRAINT FK_САМОЛЕТ_САМОЛЕТ_Э_ЭКИПАЖ

go

IF EXISTS (SELECT 1

FROM SYS.SYSREFERENCES R JOIN SYS.SYSOBJECTS O ON (O.ID = R.CONSTID AND O.TYPE = 'F')

WHERE R.FKEYID = OBJECT_ID('СЕРВИС') AND O.NAME = 'FK_СЕРВИС_СЕРВИС_БА_БАГАЖ')

ALTER TABLE СЕРВИС

DROP CONSTRAINT FK_СЕРВИС_СЕРВИС_БА_БАГАЖ

go

IF EXISTS (SELECT 1

FROM SYS.SYSREFERENCES R JOIN SYS.SYSOBJECTS O ON (O.ID = R.CONSTID AND O.TYPE = 'F')

WHERE R.FKEYID = OBJECT_ID('СОТРУДНИК') AND O.NAME = 'FK_СОТРУДНИ_СОТРУДНИК_АВИАКОМП')

ALTER TABLE СОТРУДНИК

DROP CONSTRAINT FK_СОТРУДНИ_СОТРУДНИК_АВИАКОМП

go

IF EXISTS (SELECT 1

FROM SYS.SYSREFERENCES R JOIN SYS.SYSOBJECTS O ON (O.ID = R.CONSTID AND O.TYPE = 'F')

WHERE R.FKEYID = OBJECT_ID('СОТРУДНИК') AND O.NAME = 'FK_СОТРУДНИ_СОТРУДНИК_ПАСПОРТ')

ALTER TABLE СОТРУДНИК

DROP CONSTRAINT FK_СОТРУДНИ_СОТРУДНИК_ПАСПОРТ

go

IF EXISTS (SELECT 1

FROM SYS.SYSREFERENCES R JOIN SYS.SYSOBJECTS O ON (O.ID = R.CONSTID AND O.TYPE = 'F')

WHERE R.FKEYID = OBJECT_ID('СОТРУДНИК') AND O.NAME = 'FK_СОТРУДНИ_СОТРУДНИК_ПОЛЬЗОВА')

ALTER TABLE СОТРУДНИК

DROP CONSTRAINT FK_СОТРУДНИ_СОТРУДНИК_ПОЛЬЗОВА

go

IF EXISTS (SELECT 1

FROM SYS.SYSREFERENCES R JOIN SYS.SYSOBJECTS O ON (O.ID = R.CONSTID AND O.TYPE = 'F')

WHERE R.FKEYID = OBJECT_ID('СОТРУДНИК') AND O.NAME = 'FK_СОТРУДНИ_СОТРУДНИК_ПРОФЕССИ')

ALTER TABLE СОТРУДНИК

DROP CONSTRAINT FK_СОТРУДНИ_СОТРУДНИК_ПРОФЕССИ

go

IF EXISTS (SELECT 1

FROM SYSINDEXES

WHERE ID = OBJECT_ID('АВИАКОМПАНИЯ')

AND NAME = 'АВИАКОМПАНИЯ_САМОЛЕТ_FK'

AND INDID > 0

AND INDID < 255)

DROP INDEX АВИАКОМПАНИЯ.АВИАКОМПАНИЯ_САМОЛЕТ_FK

go

IF EXISTS (SELECT 1

FROM SYSOBJECTS

WHERE ID = OBJECT_ID('АВИАКОМПАНИЯ')

AND TYPE = 'U')

DROP TABLE АВИАКОМПАНИЯ

go

IF EXISTS (SELECT 1

FROM SYSINDEXES

WHERE ID = OBJECT_ID('"АДРЕС НАЗНАЧЕНИЯ"')

AND NAME = 'АДРЕС НАЗНАЧЕНИЯ_МЕСТО_FK'

AND INDID > 0

AND INDID < 255)

DROP INDEX "АДРЕС НАЗНАЧЕНИЯ"."АДРЕС НАЗНАЧЕНИЯ_МЕСТО_FK"

go

IF EXISTS (SELECT 1

FROM SYSOBJECTS

WHERE ID = OBJECT_ID('"АДРЕС НАЗНАЧЕНИЯ"')

AND TYPE = 'U')

DROP TABLE "АДРЕС НАЗНАЧЕНИЯ"

go

IF EXISTS (SELECT 1

FROM SYSINDEXES

WHERE ID = OBJECT_ID('"АДРЕС ОТПРАВЛЕНИЯ"')

AND NAME = 'АДРЕС ОТПРАВЛЕНИЯ_МЕСТО_FK'

AND INDID > 0

AND INDID < 255)

DROP INDEX "АДРЕС ОТПРАВЛЕНИЯ"."АДРЕС ОТПРАВЛЕНИЯ_МЕСТО_FK"

go

IF EXISTS (SELECT 1

FROM SYSOBJECTS

WHERE ID = OBJECT_ID('"АДРЕС ОТПРАВЛЕНИЯ"')

AND TYPE = 'U')

DROP TABLE "АДРЕС ОТПРАВЛЕНИЯ"

go

IF EXISTS (SELECT 1

FROM SYSOBJECTS

WHERE ID = OBJECT_ID('БАГАЖ')

AND TYPE = 'U')

DROP TABLE БАГАЖ

go

IF EXISTS (SELECT 1

FROM SYSINDEXES

WHERE ID = OBJECT_ID('БИЛЕТ')

AND NAME = 'БИЛЕТ_РЕЙС_FK'

AND INDID > 0

AND INDID < 255)

DROP INDEX БИЛЕТ.БИЛЕТ_РЕЙС_FK

go

IF EXISTS (SELECT 1

FROM SYSINDEXES

WHERE ID = OBJECT_ID('БИЛЕТ')

AND NAME = 'БИЛЕТ_СЕРВИС_FK'

AND INDID > 0

AND INDID < 255)

DROP INDEX БИЛЕТ.БИЛЕТ_СЕРВИС_FK

go

IF EXISTS (SELECT 1

FROM SYSOBJECTS

WHERE ID = OBJECT_ID('БИЛЕТ')

AND TYPE = 'U')

DROP TABLE БИЛЕТ

go

IF EXISTS (SELECT 1

FROM SYSOBJECTS

WHERE ID = OBJECT_ID('ЗАРПЛАТА')

AND TYPE = 'U')

DROP TABLE ЗАРПЛАТА

go

IF EXISTS (SELECT 1

FROM SYSINDEXES

WHERE ID = OBJECT_ID('КЛИЕНТ')

AND NAME = 'КЛИЕНТ_БИЛЕТ_FK'

AND INDID > 0

AND INDID < 255)

DROP INDEX КЛИЕНТ.КЛИЕНТ_БИЛЕТ_FK

go

IF EXISTS (SELECT 1

FROM SYSOBJECTS

WHERE ID = OBJECT_ID('КЛИЕНТ')

AND TYPE = 'U')

DROP TABLE КЛИЕНТ

go

IF EXISTS (SELECT 1

FROM SYSOBJECTS

WHERE ID = OBJECT_ID('МЕСТО')

AND TYPE = 'U')

DROP TABLE МЕСТО

go

IF EXISTS (SELECT 1

FROM SYSOBJECTS

WHERE ID = OBJECT_ID('"ОБСЛУЖИВАЮЩИЕ БРИГАДЫ"')

AND TYPE = 'U')

DROP TABLE "ОБСЛУЖИВАЮЩИЕ БРИГАДЫ"

go

IF EXISTS (SELECT 1

FROM SYSOBJECTS

WHERE ID = OBJECT_ID('ПАСПОРТ')

AND TYPE = 'U')

DROP TABLE ПАСПОРТ

go

IF EXISTS (SELECT 1

FROM SYSOBJECTS

WHERE ID = OBJECT_ID('ПОЛЬЗОВАТЕЛЬ')

AND TYPE = 'U')

DROP TABLE ПОЛЬЗОВАТЕЛЬ

go

IF EXISTS (SELECT 1

FROM SYSINDEXES

WHERE ID = OBJECT_ID('ПРОФЕССИЯ')

AND NAME = 'ПРОФЕССИЯ_ЗАРПЛАТА_FK'

AND INDID > 0

AND INDID < 255)

DROP INDEX ПРОФЕССИЯ.ПРОФЕССИЯ_ЗАРПЛАТА_FK

go

IF EXISTS (SELECT 1

FROM SYSOBJECTS

WHERE ID = OBJECT_ID('ПРОФЕССИЯ')

AND TYPE = 'U')

DROP TABLE ПРОФЕССИЯ

go

IF EXISTS (SELECT 1

FROM SYSOBJECTS

WHERE ID = OBJECT_ID('РАСПИСАНИЕ')

AND TYPE = 'U')

DROP TABLE РАСПИСАНИЕ

go

IF EXISTS (SELECT 1

FROM SYSINDEXES

WHERE ID = OBJECT_ID('РЕЙС')

AND NAME = 'РЕЙС_АДРЕС НАЗНАЧЕНИЯ_FK'

AND INDID > 0

AND INDID < 255)

DROP INDEX РЕЙС."РЕЙС_АДРЕС НАЗНАЧЕНИЯ_FK"

go

IF EXISTS (SELECT 1

FROM SYSINDEXES

WHERE ID = OBJECT_ID('РЕЙС')

AND NAME = 'РЕЙС_АДРЕС ОТПРАВЛЕНИЯ_FK'

AND INDID > 0

AND INDID < 255)

DROP INDEX РЕЙС."РЕЙС_АДРЕС ОТПРАВЛЕНИЯ_FK"

go

IF EXISTS (SELECT 1

FROM SYSINDEXES

WHERE ID = OBJECT_ID('РЕЙС')

AND NAME = 'РЕЙС_РАСПИСАНИЕ_FK'

AND INDID > 0

AND INDID < 255)

DROP INDEX РЕЙС.РЕЙС_РАСПИСАНИЕ_FK

go

IF EXISTS (SELECT 1

FROM SYSOBJECTS

WHERE ID = OBJECT_ID('РЕЙС')

AND TYPE = 'U')

DROP TABLE РЕЙС

go

IF EXISTS (SELECT 1

FROM SYSINDEXES

WHERE ID = OBJECT_ID('САМОЛЕТ')

AND NAME = 'САМОЛЕТ_ЭКИПАЖ_FK'

AND INDID > 0

AND INDID < 255)

DROP INDEX САМОЛЕТ.САМОЛЕТ_ЭКИПАЖ_FK

go

IF EXISTS (SELECT 1

FROM SYSINDEXES

WHERE ID = OBJECT_ID('САМОЛЕТ')

AND NAME = 'САМОЛЕТ_ОБСЛУЖИВАЮЩИЕ БРИГАДЫ_FK'

AND INDID > 0

AND INDID < 255)

DROP INDEX САМОЛЕТ."САМОЛЕТ_ОБСЛУЖИВАЮЩИЕ БРИГАДЫ_FK"

go

IF EXISTS (SELECT 1

FROM SYSOBJECTS

WHERE ID = OBJECT_ID('САМОЛЕТ')

AND TYPE = 'U')

DROP TABLE САМОЛЕТ

go

IF EXISTS (SELECT 1

FROM SYSINDEXES

WHERE ID = OBJECT_ID('СЕРВИС')

AND NAME = 'СЕРВИС_БАГАЖ_FK'

AND INDID > 0

AND INDID < 255)

DROP INDEX СЕРВИС.СЕРВИС_БАГАЖ_FK

go

IF EXISTS (SELECT 1

FROM SYSOBJECTS

WHERE ID = OBJECT_ID('СЕРВИС')

AND TYPE = 'U')

DROP TABLE СЕРВИС

go

IF EXISTS (SELECT 1

FROM SYSINDEXES

WHERE ID = OBJECT_ID('СОТРУДНИК')

AND NAME = 'СОТРУДНИК_ПОЛЬЗОВАТЕЛЬ_FK'

AND INDID > 0

AND INDID < 255)

DROP INDEX СОТРУДНИК.СОТРУДНИК_ПОЛЬЗОВАТЕЛЬ_FK

go

IF EXISTS (SELECT 1

FROM SYSINDEXES

WHERE ID = OBJECT_ID('СОТРУДНИК')

AND NAME = 'СОТРУДНИК_ПАСПОРТ_FK'

AND INDID > 0

AND INDID < 255)

DROP INDEX СОТРУДНИК.СОТРУДНИК_ПАСПОРТ_FK

go

IF EXISTS (SELECT 1

FROM SYSINDEXES

WHERE ID = OBJECT_ID('СОТРУДНИК')

AND NAME = 'СОТРУДНИК_АВИАКОМПАНИЯ_FK'

AND INDID > 0

AND INDID < 255)

DROP INDEX СОТРУДНИК.СОТРУДНИК_АВИАКОМПАНИЯ_FK

go

IF EXISTS (SELECT 1

FROM SYSINDEXES

WHERE ID = OBJECT_ID('СОТРУДНИК')

AND NAME = 'СОТРУДНИК_ПРОФЕССИЯ_FK'

AND INDID > 0

AND INDID < 255)

DROP INDEX СОТРУДНИК.СОТРУДНИК_ПРОФЕССИЯ_FK

go

IF EXISTS (SELECT 1

FROM SYSOBJECTS

WHERE ID = OBJECT_ID('СОТРУДНИК')

AND TYPE = 'U')

DROP TABLE СОТРУДНИК

go

IF EXISTS (SELECT 1

FROM SYSOBJECTS

WHERE ID = OBJECT_ID('ЭКИПАЖ')

AND TYPE = 'U')

DROP TABLE ЭКИПАЖ

go

/*==============================================================*/

/* Table: АВИАКОМПАНИЯ */

/*==============================================================*/

CREATE TABLE АВИАКОМПАНИЯ (

"ID АВИАКОМПАНИИ" INT NOT NULL,

"БОРТ НОМЕР САМОЛЕТА" INT NULL,

НАЗВАНИЕ TEXT NOT NULL,

"ДАТА ОСНОВАНИЯ" DATETIME NOT NULL,

"КОЛИЧЕСТВО СОТРУДНИКОВ" BIGINT NOT NULL,

"КОЛИЧЕСТВО САМОЛЕТОВ" INT NOT NULL,

CONSTRAINT PK_АВИАКОМПАНИЯ PRIMARY KEY NONCLUSTERED ("ID АВИАКОМПАНИИ")

)

go

/*==============================================================*/

/* Index: АВИАКОМПАНИЯ_САМОЛЕТ_FK */

/*==============================================================*/

CREATE INDEX АВИАКОМПАНИЯ_САМОЛЕТ_FK ON АВИАКОМПАНИЯ (

"БОРТ НОМЕР САМОЛЕТА" ASC

)

go

/*==============================================================*/

/* Table: "АДРЕС НАЗНАЧЕНИЯ" */

/*==============================================================*/

CREATE TABLE "АДРЕС НАЗНАЧЕНИЯ" (

"ID АДРЕСА НАЗНАЧЕНИЯ" INT NOT NULL,

"ID МЕСТА" INT NOT NULL,

CONSTRAINT "PK_АДРЕС НАЗНАЧЕНИЯ" PRIMARY KEY NONCLUSTERED ("ID АДРЕСА НАЗНАЧЕНИЯ")

)

go

/*==============================================================*/

/* Index: "АДРЕС НАЗНАЧЕНИЯ_МЕСТО_FK" */

/*==============================================================*/

CREATE INDEX "АДРЕС НАЗНАЧЕНИЯ_МЕСТО_FK" ON "АДРЕС НАЗНАЧЕНИЯ" (

"ID МЕСТА" ASC

)

go

/*==============================================================*/

/* Table: "АДРЕС ОТПРАВЛЕНИЯ" */

/*==============================================================*/

CREATE TABLE "АДРЕС ОТПРАВЛЕНИЯ" (

"ID АДРЕСА ОТПРАВЛЕНИЯ" INT NOT NULL,

"ID МЕСТА" INT NOT NULL,

CONSTRAINT "PK_АДРЕС ОТПРАВЛЕНИЯ" PRIMARY KEY NONCLUSTERED ("ID АДРЕСА ОТПРАВЛЕНИЯ")

) приложение отчет sql скрипт

go

/*==============================================================*/

/* Index: "АДРЕС ОТПРАВЛЕНИЯ_МЕСТО_FK" */

/*==============================================================*/

CREATE INDEX "АДРЕС ОТПРАВЛЕНИЯ_МЕСТО_FK" ON "АДРЕС ОТПРАВЛЕНИЯ" (

"ID МЕСТА" ASC

)

go

/*==============================================================*/

/* Table: БАГАЖ */

/*==============================================================*/

CREATE TABLE БАГАЖ (

"ID БАГАЖА" INT NOT NULL,

"ОБЪЕМ ГРУЗА" FLOAT NOT NULL,

"ЦЕНА БАГАЖА" MONEY NOT NULL,

CONSTRAINT PK_БАГАЖ PRIMARY KEY NONCLUSTERED ("ID БАГАЖА")

)

go

/*==============================================================*/

/* Table: БИЛЕТ */

/*==============================================================*/

CREATE TABLE БИЛЕТ (

"НОМЕР БИЛЕТА" INT NOT NULL,

"КЛАСС СЕРВИСА" INT NOT NULL,

"ID РЕЙСА" INT NOT NULL,

ЦЕНА MONEY NOT NULL,

ВАЛЮТА TEXT NOT NULL,

CONSTRAINT PK_БИЛЕТ PRIMARY KEY NONCLUSTERED ("НОМЕР БИЛЕТА")

)

go

/*==============================================================*/

/* Index: БИЛЕТ_СЕРВИС_FK */

/*==============================================================*/

CREATE INDEX БИЛЕТ_СЕРВИС_FK ON БИЛЕТ (

"КЛАСС СЕРВИСА" ASC

)

go

/*==============================================================*/

/* Index: БИЛЕТ_РЕЙС_FK */

/*==============================================================*/

CREATE INDEX БИЛЕТ_РЕЙС_FK ON БИЛЕТ (

"ID РЕЙСА" ASC

)

go

/*==============================================================*/

/* Table: ЗАРПЛАТА */

/*==============================================================*/

CREATE TABLE ЗАРПЛАТА (

"ID ЗАРПЛАТЫ" INT NOT NULL,

ОКЛАД MONEY NOT NULL,

CONSTRAINT PK_ЗАРПЛАТА PRIMARY KEY NONCLUSTERED ("ID ЗАРПЛАТЫ")

)

go

/*==============================================================*/

/* Table: КЛИЕНТ */

/*==============================================================*/

CREATE TABLE КЛИЕНТ (

"ID КЛИЕНТА" INT NOT NULL,

"НОМЕР БИЛЕТА" INT NULL,

"КОНТАКТНЫЙ НОМЕР" TEXT NOT NULL,

ЯЗЫК TEXT NOT NULL,

ПОСТОЯННЫЙ BIT NOT NULL,

CONSTRAINT PK_КЛИЕНТ PRIMARY KEY NONCLUSTERED ("ID КЛИЕНТА")

)

go

/*==============================================================*/

/* Index: КЛИЕНТ_БИЛЕТ_FK */

/*==============================================================*/

CREATE INDEX КЛИЕНТ_БИЛЕТ_FK ON КЛИЕНТ (

"НОМЕР БИЛЕТА" ASC

)

go

/*==============================================================*/

/* Table: МЕСТО */

/*==============================================================*/

CREATE TABLE МЕСТО (

"ID МЕСТА" INT NOT NULL,

СТРАНА TEXT NOT NULL,

ГОРОД TEXT NOT NULL,

ВОКЗАЛ TEXT NOT NULL,

CONSTRAINT PK_МЕСТО PRIMARY KEY NONCLUSTERED ("ID МЕСТА")

)

go

/*==============================================================*/

/* Table: "ОБСЛУЖИВАЮЩИЕ БРИГАДЫ" */

/*==============================================================*/

CREATE TABLE "ОБСЛУЖИВАЮЩИЕ БРИГАДЫ" (

"НОМЕР БРИГАДЫ" INT NOT NULL,

"НАЗВАНИЕ БРАГАДЫ" TEXT NOT NULL,

CONSTRAINT "PK_ОБСЛУЖИВАЮЩИЕ БРИГАДЫ" PRIMARY KEY NONCLUSTERED ("НОМЕР БРИГАДЫ")

)

go

/*==============================================================*/

/* Table: ПАСПОРТ */

/*==============================================================*/

CREATE TABLE ПАСПОРТ (

"НОМЕР ПАСПОРТА" BIGINT NOT NULL,

ФИО TEXT NOT NULL,

"ДАТА РОЖДЕНИЯ" DATETIME NOT NULL,

"МЕСТО ПРОПИСКИ" TEXT NOT NULL,

"МЕСТО ПРОЖИВАНИЯ" TEXT NOT NULL,

CONSTRAINT PK_ПАСПОРТ PRIMARY KEY NONCLUSTERED ("НОМЕР ПАСПОРТА")

)

go

/*==============================================================*/

/* Table: ПОЛЬЗОВАТЕЛЬ */

/*==============================================================*/

CREATE TABLE ПОЛЬЗОВАТЕЛЬ (

LOGIN TEXT NOT NULL,

PASSWORD TEXT NOT NULL,

EMAIL TEXT NULL,

"ID ПОЛЬЗОВАТЕЛЯ" INT NOT NULL,

CONSTRAINT PK_ПОЛЬЗОВАТЕЛЬ PRIMARY KEY NONCLUSTERED ("ID ПОЛЬЗОВАТЕЛЯ")

)

go

/*==============================================================*/

/* Table: ПРОФЕССИЯ */

/*==============================================================*/

CREATE TABLE ПРОФЕССИЯ (

"ID ПРОФЕССИИ" INT NOT NULL,

"ID ЗАРПЛАТЫ" INT NOT NULL,

НАЗВАНИЕ TEXT NOT NULL,

CONSTRAINT PK_ПРОФЕССИЯ PRIMARY KEY NONCLUSTERED ("ID ПРОФЕССИИ")

)

go

/*==============================================================*/

/* Index: ПРОФЕССИЯ_ЗАРПЛАТА_FK */

/*==============================================================*/

CREATE INDEX ПРОФЕССИЯ_ЗАРПЛАТА_FK ON ПРОФЕССИЯ (

"ID ЗАРПЛАТЫ" ASC

)

go

/*==============================================================*/

/* Table: РАСПИСАНИЕ */

/*==============================================================*/

CREATE TABLE РАСПИСАНИЕ (

"ВРЕМЯ РЕЙСА" DATETIME NOT NULL,

CONSTRAINT PK_РАСПИСАНИЕ PRIMARY KEY NONCLUSTERED ("ВРЕМЯ РЕЙСА")

)

go

/*==============================================================*/

/* Table: РЕЙС */

/*==============================================================*/

CREATE TABLE РЕЙС (

"ID РЕЙСА" INT NOT NULL,

"ВРЕМЯ РЕЙСА" DATETIME NOT NULL,

"ID АДРЕСА НАЗНАЧЕНИЯ" INT NOT NULL,

"ID АДРЕСА ОТПРАВЛЕНИЯ" INT NOT NULL,

ПРЯМОЙ BIT NOT NULL,

CONSTRAINT PK_РЕЙС PRIMARY KEY NONCLUSTERED ("ID РЕЙСА")

)

go

/*==============================================================*/

/* Index: РЕЙС_РАСПИСАНИЕ_FK */

/*==============================================================*/

CREATE INDEX РЕЙС_РАСПИСАНИЕ_FK ON РЕЙС (

"ВРЕМЯ РЕЙСА" ASC

)

go

/*==============================================================*/

/* Index: "РЕЙС_АДРЕС ОТПРАВЛЕНИЯ_FK" */

/*==============================================================*/

CREATE INDEX "РЕЙС_АДРЕС ОТПРАВЛЕНИЯ_FK" ON РЕЙС (

"ID АДРЕСА ОТПРАВЛЕНИЯ" ASC

)

go

/*==============================================================*/

/* Index: "РЕЙС_АДРЕС НАЗНАЧЕНИЯ_FK" */

/*==============================================================*/

CREATE INDEX "РЕЙС_АДРЕС НАЗНАЧЕНИЯ_FK" ON РЕЙС (

"ID АДРЕСА НАЗНАЧЕНИЯ" ASC

)

go

/*==============================================================*/

/* Table: САМОЛЕТ */

/*==============================================================*/

CREATE TABLE САМОЛЕТ (

"БОРТ НОМЕР САМОЛЕТА" INT NOT NULL,

"НОМЕР БРИГАДЫ" INT NOT NULL,

"НОМЕР ЭКИПАЖА" INT NOT NULL,

"КОЛИЧЕСТВО МЕСТ" INT NOT NULL,

МОДЕЛЬ TEXT NOT NULL,

"ДАТА ВЫПУСКА" DATETIME NOT NULL,

CONSTRAINT PK_САМОЛЕТ PRIMARY KEY NONCLUSTERED ("БОРТ НОМЕР САМОЛЕТА")

)

go

/*==============================================================*/

/* Index: "САМОЛЕТ_ОБСЛУЖИВАЮЩИЕ БРИГАДЫ_FK" */

/*==============================================================*/

CREATE INDEX "САМОЛЕТ_ОБСЛУЖИВАЮЩИЕ БРИГАДЫ_FK" ON САМОЛЕТ (

"НОМЕР БРИГАДЫ" ASC

)

go

/*==============================================================*/

/* Index: САМОЛЕТ_ЭКИПАЖ_FK */

/*==============================================================*/

CREATE INDEX САМОЛЕТ_ЭКИПАЖ_FK ON САМОЛЕТ (

"НОМЕР ЭКИПАЖА" ASC

)

go

/*==============================================================*/

/* Table: СЕРВИС */

/*==============================================================*/

CREATE TABLE СЕРВИС (

"КЛАСС СЕРВИСА" INT NOT NULL,

"ID БАГАЖА" INT NULL,

ПИТАНИЕ BIT NOT NULL,

CONSTRAINT PK_СЕРВИС PRIMARY KEY NONCLUSTERED ("КЛАСС СЕРВИСА")

)

go

/*==============================================================*/

/* Index: СЕРВИС_БАГАЖ_FK */

/*==============================================================*/

CREATE INDEX СЕРВИС_БАГАЖ_FK ON СЕРВИС (

"ID БАГАЖА" ASC

)

go

/*==============================================================*/

/* Table: СОТРУДНИК */

/*==============================================================*/

CREATE TABLE СОТРУДНИК (

"ID СОТРУДНИКА" INT NOT NULL,

"ID ПРОФЕССИИ" INT NULL,

"ID АВИАКОМПАНИИ" INT NULL,

"НОМЕР ПАСПОРТА" BIGINT NOT NULL,

"ID ПОЛЬЗОВАТЕЛЯ" INT NULL,

CONSTRAINT PK_СОТРУДНИК PRIMARY KEY NONCLUSTERED ("ID СОТРУДНИКА")

)

go

/*==============================================================*/

/* Index: СОТРУДНИК_ПРОФЕССИЯ_FK */

/*==============================================================*/

CREATE INDEX СОТРУДНИК_ПРОФЕССИЯ_FK ON СОТРУДНИК (

"ID ПРОФЕССИИ" ASC

)

go

/*==============================================================*/

/* Index: СОТРУДНИК_АВИАКОМПАНИЯ_FK */

/*==============================================================*/

CREATE INDEX СОТРУДНИК_АВИАКОМПАНИЯ_FK ON СОТРУДНИК (

"ID АВИАКОМПАНИИ" ASC

)

go

/*==============================================================*/

/* Index: СОТРУДНИК_ПАСПОРТ_FK */

/*==============================================================*/

CREATE INDEX СОТРУДНИК_ПАСПОРТ_FK ON СОТРУДНИК (

"НОМЕР ПАСПОРТА" ASC

)

go

/*==============================================================*/

/* Index: СОТРУДНИК_ПОЛЬЗОВАТЕЛЬ_FK */

/*==============================================================*/

CREATE INDEX СОТРУДНИК_ПОЛЬЗОВАТЕЛЬ_FK ON СОТРУДНИК (

"ID ПОЛЬЗОВАТЕЛЯ" ASC

)

go

/*==============================================================*/

/* Table: ЭКИПАЖ */

/*==============================================================*/

CREATE TABLE ЭКИПАЖ (

"НОМЕР ЭКИПАЖА" INT NOT NULL,

CONSTRAINT PK_ЭКИПАЖ PRIMARY KEY NONCLUSTERED ("НОМЕР ЭКИПАЖА")

)

go

ALTER TABLE АВИАКОМПАНИЯ

ADD CONSTRAINT FK_АВИАКОМП_АВИАКОМПА_САМОЛЕТ FOREIGN KEY ("БОРТ НОМЕР САМОЛЕТА")

REFERENCES САМОЛЕТ ("БОРТ НОМЕР САМОЛЕТА")

go

ALTER TABLE "АДРЕС НАЗНАЧЕНИЯ"

ADD CONSTRAINT "FK_АДРЕС НА_АДРЕС НАЗ_МЕСТО" FOREIGN KEY ("ID МЕСТА")

REFERENCES МЕСТО ("ID МЕСТА")

go

ALTER TABLE "АДРЕС ОТПРАВЛЕНИЯ"

ADD CONSTRAINT "FK_АДРЕС ОТ_АДРЕС ОТП_МЕСТО" FOREIGN KEY ("ID МЕСТА")

REFERENCES МЕСТО ("ID МЕСТА")

go

ALTER TABLE БИЛЕТ

ADD CONSTRAINT FK_БИЛЕТ_БИЛЕТ_РЕЙ_РЕЙС FOREIGN KEY ("ID РЕЙСА")

REFERENCES РЕЙС ("ID РЕЙСА")

go

ALTER TABLE БИЛЕТ

ADD CONSTRAINT FK_БИЛЕТ_БИЛЕТ_СЕР_СЕРВИС FOREIGN KEY ("КЛАСС СЕРВИСА")

REFERENCES СЕРВИС ("КЛАСС СЕРВИСА")

go

ALTER TABLE КЛИЕНТ

ADD CONSTRAINT FK_КЛИЕНТ_КЛИЕНТ_БИ_БИЛЕТ FOREIGN KEY ("НОМЕР БИЛЕТА")

REFERENCES БИЛЕТ ("НОМЕР БИЛЕТА")

go

ALTER TABLE ПРОФЕССИЯ

ADD CONSTRAINT FK_ПРОФЕССИ_ПРОФЕССИЯ_ЗАРПЛАТА FOREIGN KEY ("ID ЗАРПЛАТЫ")

REFERENCES ЗАРПЛАТА ("ID ЗАРПЛАТЫ")

go

ALTER TABLE РЕЙС

ADD CONSTRAINT "FK_РЕЙС_РЕЙС_АДРЕ_АДРЕС НА" FOREIGN KEY ("ID АДРЕСА НАЗНАЧЕНИЯ")

REFERENCES "АДРЕС НАЗНАЧЕНИЯ" ("ID АДРЕСА НАЗНАЧЕНИЯ")

go

ALTER TABLE РЕЙС

ADD CONSTRAINT "FK_РЕЙС_РЕЙС_АДРЕ_АДРЕС ОТ" FOREIGN KEY ("ID АДРЕСА ОТПРАВЛЕНИЯ")

REFERENCES "АДРЕС ОТПРАВЛЕНИЯ" ("ID АДРЕСА ОТПРАВЛЕНИЯ")

go

ALTER TABLE РЕЙС

ADD CONSTRAINT FK_РЕЙС_РЕЙС_РАСП_РАСПИСАН FOREIGN KEY ("ВРЕМЯ РЕЙСА")

REFERENCES РАСПИСАНИЕ ("ВРЕМЯ РЕЙСА")

go

ALTER TABLE САМОЛЕТ

ADD CONSTRAINT FK_САМОЛЕТ_САМОЛЕТ_О_ОБСЛУЖИВ FOREIGN KEY ("НОМЕР БРИГАДЫ")

REFERENCES "ОБСЛУЖИВАЮЩИЕ БРИГАДЫ" ("НОМЕР БРИГАДЫ")

go

ALTER TABLE САМОЛЕТ

ADD CONSTRAINT FK_САМОЛЕТ_САМОЛЕТ_Э_ЭКИПАЖ FOREIGN KEY ("НОМЕР ЭКИПАЖА")

REFERENCES ЭКИПАЖ ("НОМЕР ЭКИПАЖА")

go

ALTER TABLE СЕРВИС

ADD CONSTRAINT FK_СЕРВИС_СЕРВИС_БА_БАГАЖ FOREIGN KEY ("ID БАГАЖА")

REFERENCES БАГАЖ ("ID БАГАЖА")

go

ALTER TABLE СОТРУДНИК

ADD CONSTRAINT FK_СОТРУДНИ_СОТРУДНИК_АВИАКОМП FOREIGN KEY ("ID АВИАКОМПАНИИ")

REFERENCES АВИАКОМПАНИЯ ("ID АВИАКОМПАНИИ")

go

ALTER TABLE СОТРУДНИК

ADD CONSTRAINT FK_СОТРУДНИ_СОТРУДНИК_ПАСПОРТ FOREIGN KEY ("НОМЕР ПАСПОРТА")

REFERENCES ПАСПОРТ ("НОМЕР ПАСПОРТА")

go

ALTER TABLE СОТРУДНИК

ADD CONSTRAINT FK_СОТРУДНИ_СОТРУДНИК_ПОЛЬЗОВА FOREIGN KEY ("ID ПОЛЬЗОВАТЕЛЯ")

REFERENCES ПОЛЬЗОВАТЕЛЬ ("ID ПОЛЬЗОВАТЕЛЯ")

go

ALTER TABLE СОТРУДНИК

ADD CONSTRAINT FK_СОТРУДНИ_СОТРУДНИК_ПРОФЕССИ FOREIGN KEY ("ID ПРОФЕССИИ")

REFERENCES ПРОФЕССИЯ ("ID ПРОФЕССИИ")

Go

8.2 Код C#

internal class Buy {

private const string connectionString =

@"Data Source=(local);Initial Catalog=Aviatickets;Integrated Security=True";

private readonly SqlConnection con = new SqlConnection(connectionString);

private string nomerBileta;

internal DataTable SendSearch(bool pryam, string avia, string racebegin, string raceend) {

string query = string.Format("Select * " +

"FROM [РЕЙС] " + INNER JOIN [АВИАКОМПАНИЯ] ON [ID АВИАКОМПАНИИ] = {0}", avia);

try {

var cmd = new SqlCommand(query, con);

con.Open();

var adapter = new SqlDataAdapter(cmd);

var ds = new DataSet();

adapter.Fill(ds, "АВИАКОМПАНИЯ");

return ds.Tables[0];

}

finally {

con.Close();

}

}

internal void SendData2(string nomerbileta, string language, string contactniynum) {

nomerBileta = nomerbileta;

var idc = new Random();

int idClient = idc.Next();

string query = string.Format("INSERT INTO [КЛИЕНТ] " +Values(" +'{0}', " +'{1}', " +'{2}', " +'{3}', " +'{4}') ", idClient, nomerBileta, contactniynum, language, false

);

var ip = new InputData();

ip.Vvodim(query);

}

internal void SendData3(string pasportid,

string fiomiliya,

string dt,

string mestopro,

string mestolives) {

string query = string.Format("INSERT INTO [ПАСПОРТ] " +VALUES(" +'{0}', " +'{1}', " +'{2}', " +'{3}', " +'{4}') ",

pasportid, fiomiliya, dt, mestopro, mestolives);

var ip = new InputData();

ip.Vvodim(query);

}

internal string GetZena() {

string query = string.Format("Select [ЦЕНА] " +

"From [БИЛЕТ] " +"WHERE [НОМЕР БИЛЕТА] = '{0}'", nomerBileta);

string output = null;

try {

var com = new SqlCommand(query, con);

con.Open();

SqlDataReader drr = com.ExecuteReader();

if (drr.HasRows) {

while (drr.Read()) {

if (!(drr.IsDBNull(0))){

output = drr.GetDecimal(0).ToString();

}

}

return output;

}

}

catch (Exception a) {

MessageBox.Show(a.Message);

}

return null;

}

}

internal class Dal {

private const string connectionString =

@"Data Source=(local);Initial Catalog=Aviatickets;Integrated Security=True";

private readonly SqlConnection con = new SqlConnection(connectionString);

/// <summary>

/// Проверка на наличие прав юзера

/// </summary>

/// <param name="login"></param>

/// <param name="password"></param>

/// <param name="email"></param>

/// <returns>

/// false - вход не разрешен

/// true - вход возможен</returns>

public static bool IsUser(string login, string password, string email = "") {

string query = null;

if (email != "") {

query = string.Format("Select * from [ПОЛЬЗОВАТЕЛЬ] WHERE" + "[LOGIN] like '{0}' and " + "[PASSWORD] like '{1}' and " + "[EMAIL] like '{2}'", login, password, email);

}

else {

query = string.Format("Select * from [ПОЛЬЗОВАТЕЛЬ] WHERE" +"[LOGIN] like '{0}' and " + "[PASSWORD] like '{1}'", login, password); //login

}

//Запрос по системе

using (var con = new SqlConnection(connectionString)) {

var com = new SqlCommand(query, con);

con.Open();

SqlDataReader dr = com.ExecuteReader();

return dr.HasRows;

}

}

public DataTable GetTickets() {

try {

var cmd = new SqlCommand("Select * from [БИЛЕТ]", con);

con.Open();

var adapter = new SqlDataAdapter(cmd);

var ds = new DataSet();

adapter.Fill(ds, "Билеты");

return ds.Tables[0];

}

finally {

con.Close();

}

}

public DataTable GetAviacompany() {

try {

var cmd = new SqlCommand("Select * from [АВИАКОМПАНИЯ]", con);

con.Open();

var adapter = new SqlDataAdapter(cmd);

var ds = new DataSet();

adapter.Fill(ds, "АВИАКОМПАНИЯ");

return ds.Tables[0];

}

finally {

con.Close();

}

}

public DataTable GetClient() {

try {

var cmd = new SqlCommand("Select * from [КЛИЕНТ]", con);

con.Open();

var adapter = new SqlDataAdapter(cmd);

var ds = new DataSet();

adapter.Fill(ds, "КЛИЕНТ");

return ds.Tables[0];

}

finally {

con.Close();

}

}

public DataTable GetPlace() {

try {

var cmd = new SqlCommand("Select * from [МЕСТО]", con);

con.Open();

var adapter = new SqlDataAdapter(cmd);

var ds = new DataSet();

adapter.Fill(ds, "МЕСТО");

return ds.Tables[0];

}

finally {

con.Close();

}

}

public DataTable GetTrade() {

try {

var cmd = new SqlCommand("Select * from [ЗАРПЛАТА]", con);

con.Open();

var adapter = new SqlDataAdapter(cmd);

var ds = new DataSet();

adapter.Fill(ds, "ЗАРПЛАТА");

return ds.Tables[0];

}

finally {

con.Close();

}

}

public DataTable GetUsers() {

try {

var cmd = new SqlCommand("Select * from [ПОЛЬЗОВАТЕЛЬ]", con);

con.Open();

var adapter = new SqlDataAdapter(cmd);

var ds = new DataSet();

adapter.Fill(ds, "ПОЛЬЗОВАТЕЛЬ");

return ds.Tables[0];

}

finally {

con.Close();

}

}

public DataTable GetPasports() {

try {

var cmd = new SqlCommand("Select * from [ПАСПОРТ]", con);

con.Open();

var adapter = new SqlDataAdapter(cmd);

var ds = new DataSet();

adapter.Fill(ds, "ПАСПОРТ");

return ds.Tables[0];

}

finally {

con.Close();

}

}

public DataTable GetAir() {

try {

var cmd = new SqlCommand("Select * from [САМОЛЕТ]", con);

con.Open();

var adapter = new SqlDataAdapter(cmd);

var ds = new DataSet();

adapter.Fill(ds, "Самолет");

return ds.Tables[0];

}

finally {

con.Close();

}

}

public DataTable GetWorkers() {

try {

var cmd = new SqlCommand("Select * from [СОТРУДНИК]", con);

con.Open();

var adapter = new SqlDataAdapter(cmd);

var ds = new DataSet();

adapter.Fill(ds, "СОТРУДНИКИ");

return ds.Tables[0];

}

finally {

con.Close();

}

}

}

internal class ExportToExcel {

public ExportToExcel(DataTable dt, string strFilePath) {

// Create the CSV file to which grid data will be exported.

var sw = new StreamWriter(strFilePath, false, Encoding.UTF8);// First we will write the headers.

//DataTable dt = m_dsProducts.Tables[0];

int iColCount = dt.Columns.Count;

for (int i = 0; i < iColCount; i++) {

sw.Write(dt.Columns[i]);

if (i < iColCount - 1) {

sw.Write(";");

}

}

sw.Write(sw.NewLine);

foreach (DataRow dr in dt.Rows) {

for (int i = 0; i < iColCount; i++){

if (!Convert.IsDBNull(dr[i])){

sw.Write(dr[i].ToString());

}

if (i < iColCount - 1){

sw.Write(",");

}

}

sw.Write(sw.NewLine);

}

sw.Close();

}

}

internal class InputData {

private const string connectionString =

@"Data Source=(local);Initial Catalog=Aviatickets;Integrated Security=True";

private readonly SqlConnection con = new SqlConnection(connectionString);

public bool IntoClient(int id, string numticket, string phonenumber, string lang, bool ispostoyan) {

string str = string.Format("Количество билетов {0} " +"Телефон {1} " +"Язык {2} " +"Постоянный {3}", numticket, phonenumber, lang, ispostoyan);

MessageBox.Show(str);

string query = string.Format("Insert Into КЛИЕНТ " +

"([ID КЛИЕНТА], [НОМЕР БИЛЕТА], [КОНТАКТНЫЙ НОМЕР], ЯЗЫК, ПОСТОЯННЫЙ) " + "Values ('{0}', '{1}', '{2}', '{3}', '{4}')", id, numticket, phonenumber, lang, ispostoyan);

return Vvodim(query);

}

public bool Vvodim(string query) {

try {

var cmd = new SqlCommand(query, con);

con.Open();

cmd.ExecuteNonQuery();

return true;

}

catch (SqlException ex) {

MessageBox.Show(ex.Message);

return false;

}

finally {

con.Close();

}

}

public bool IntoWorker(int id, int idprofessii, int idaviacompany, int pasportnum, int iduser) {

string str = string.Format("профессия {0} " +

"авиакомпания {1} " +"паспорт {2} " +"юзер {3}", idprofessii, idaviacompany, pasportnum, iduser);

string query = string.Format("Insert Into СОТРУДНИК " +"([ID СОТРУДНИКА], [ID ПРОФЕССИИ], [ID АВИАКОМПАНИИ], [НОМЕР ПАСПОРТА], [ID ПОЛЬЗОВАТЕЛЯ]) " +"Values ('{0}', '{1}', '{2}', '{3}', '{4}')", id, idprofessii, idaviacompany, pasportnum, iduser);

MessageBox.Show(str);

return Vvodim(query);

}

public bool IntoPlane(int id, int brigade, int ekipazh, int mestcount, int model, string datavipuska) {

DateTime date = Convert.ToDateTime(datavipuska);

string str = string.Format("бригада {0} " +

"экипаж {1} " +"число мест {2} " +"модель {3}" +"дата {4}", brigade, ekipazh, mestcount, model, date.ToShortDateString());

string query = string.Format("Insert Into САМОЛЕТ " +"([БОРТ НОМЕР САМОЛЕТА], [НОМЕР БРИГАДЫ], [НОМЕР ЭКИПАЖА], [КОЛИЧЕСТВО МЕСТ], МОДЕЛЬ, [ДАТА ВЫПУСКА]) " +"Values ('{0}', '{1}', '{2}', '{3}', '{4}', '{5}')", id, brigade, ekipazh, mestcount, model, date);

MessageBox.Show(str);

return Vvodim(query);

}

}

public partial class inputData : Window {

private const string strabout = "Сохранение выполнено успешно!";

private const string strerror = "Неудача в сохранении";

private const string errormsg = "Ошибка в воде!!!";

private readonly InputData input;

public inputData() {

InitializeComponent();

input = new InputData();

}

private void View() {

try {

var dal = new Dal();

DataTable tickets = dal.GetTickets();

DGTick.ItemsSource = tickets.DefaultView;

DataTable workers = dal.GetWorkers();

DGWorker.ItemsSource = workers.DefaultView;

DataTable air = dal.GetAir();

DGAir.ItemsSource = air.DefaultView;

DataTable trade = dal.GetTrade();

DGTick.ItemsSource = trade.DefaultView;

DataTable passport = dal.GetPasports();

DGPassport.ItemsSource = passport.DefaultView;

DataTable user = dal.GetUsers();

DGUser.ItemsSource = user.DefaultView;

DataTable place = dal.GetPlace();

DGPlace.ItemsSource = place.DefaultView;

DataTable client = dal.GetClient(); //Правильно

DGClient.ItemsSource = client.DefaultView;

DataTable avia = dal.GetAviacompany();

DGAvia.ItemsSource = avia.DefaultView;

}

catch (Exception e) {

MessageBox.Show(e.Message);

}

}

private void SetRandIds() {

var random = new Random();

tbxIdCLient.Text = random.Next().ToString();

tbWorkerID.Text = random.Next().ToString();

tbPlaneID.Text = random.Next().ToString();

}

private void LayoutRoot_Loaded(object sender, RoutedEventArgs e) {

View();

SetRandIds();

}

private void btnExp_Click(object sender, RoutedEventArgs e) {

//Выбираем что хотим сохранять

var dal = new Dal();

DataTable dt = dal.GetClient();//сохраняем таблицу клиентов

var saveFile = new SaveFileDialog();

saveFile.ShowDialog(); //открываем диалог сохранения

if (dt != null)

new ExportToExcel(dt, saveFile.FileName); //сохраняем файл

}

private void btnNewCLient_Click(object sender, RoutedEventArgs e) {

try {

bool cheked = false;

if (cbPostoyan.IsChecked == true)

cheked = true;

MessageBox.Show(input.IntoClient(Convert.ToInt32(tbxIdCLient.Text),

tbxTicketsNum.Text, tbxPhone.Text, tbxtLang.Text, cheked)

? strabout : strerror);

}

catch {

MessageBox.Show(errormsg);

}

}

private void btnNewWorker_Click(object sender, RoutedEventArgs e) {

try { MessageBox.Show(input.IntoWorker(Convert.ToInt32(tbWorkerID.Text), Convert.ToInt32(tbProfID.Text), Convert.ToInt32(tbxAvia.Text), Convert.ToInt32(tbxPasport.Text), Convert.ToInt32(tbxtUserID.Text))

? strabout: strerror);

}

catch {

MessageBox.Show(errormsg);

}

}

private void btnAdd_Click(object sender, RoutedEventArgs e) {

try {

MessageBox.Show(input.IntoPlane(Convert.ToInt32(tbPlaneID.Text), Convert.ToInt32(tbBrigadeID.Text), Convert.ToInt32(tbEkipazID.Text), Convert.ToInt32(tbCount.Text), Convert.ToInt32(tbModel.Text), calendarDate.ToString())

? strabout: strerror);

}

catch {

MessageBox.Show(errormsg);

}

}

}

public partial class MainWindow : Window{

public MainWindow(){

this.InitializeComponent();

// Insert code required on object creation below this point.

}

private bool thisisuser;

private void BtnReport_Click(object sender, RoutedEventArgs e) {

thisisuser = Dal.IsUser(TbLogin.Text, tbPass.Password, tbEmail.Password);

string message = string.Format("Добро пожаловать в систему юзер");

if (!thisisuser) {

MessageBox.Show("Мошенник! не играйся с компутером");

return;

}

cbUserDo.Visibility = Visibility.Visible;

MessageBox.Show(message);

}

private void BtnSearch_Click(object sender, RoutedEventArgs e) {

new Searching().Show();

}

private void BtnInput_Click(object sender, RoutedEventArgs e) {

new inputData().Show();

}

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) {

if(thisisuser) {

string message = "Форма будет закрыта юзер!";

MessageBox.Show(message, "Название проги", MessageBoxButton.OK);

}

}

private void BtnExit_Click(object sender, RoutedEventArgs e) {

this.Close();

}

}

public partial class Searching : Window {

private readonly Buy buy;

private string fiomiliya;

private string pasportID;

public Searching() {

InitializeComponent();

buy = new Buy();

}

private void btnSearch_Click(object sender, RoutedEventArgs e) {

bool pryam = cbPryam.IsChecked == true;

string avia = tbAvia.Text;

string racebegin = tbRaceBegin.Text;

string raceend = tbRaceEnd.Text;

string temp = string.Format("Прямой рейс {0} " +

"авиа {1} " +"начало {2} " + "конец {3}",pryam, avia, racebegin, raceend);

dgAviaInfo.ItemsSource = buy.SendSearch(pryam, avia, racebegin, raceend).DefaultView;

MessageBox.Show(temp);

}

private void buttonBuy_Click(object sender, RoutedEventArgs e) {

string temp = string.Format("Вы выбрали {0}", dgAviaInfo.SelectedIndex);

MessageBox.Show(temp);

}

private void btnNextToPage2_Click(object sender, RoutedEventArgs e) {

string Contactniynum = tbNum.Text;

string language = tbLang.Text;

string NomerBileta = tbNumPas.Text;

pasportID = textBoxPassportID.Text;

fiomiliya = tbFIO.Text;

buy.SendData2(NomerBileta, language, Contactniynum);

string temp = string.Format("Ваш номер {0} " +"язык {1} " +"Номер билета {2} " +"номер паспорта {3}",Contactniynum, language, NomerBileta, pasportID);

MessageBox.Show(temp);

}

private void buttonFinish_Click(object sender, RoutedEventArgs e) {

string dt = cldDataBirthday.SelectedDate.Value.ToShortDateString();

string mestopro = tbMestoPropiska.Text;

string mestolive = tbMestoProlive.Text;

string mes = string.Format("Номер паспорта: {0} " +

"ФИО: {1} " +"Дата рождения {2} " + "Место жизни {3} " +"Место прописки {4} ",pasportID, fiomiliya, dt, mestopro, mestolive);

MessageBox.Show(mes);

buy.SendData3(pasportID, fiomiliya, dt, mestopro, mestolive);

string message = String.Format("Цена составляет {0} рублей Оплатите плиз",buy.GetZena());

MessageBox.Show(message);

}

}

Заключение

В рамках данного курсового проекта была разработана система бронирования авиабилетов: спроектирована база данных SQL Server 2008, а так же реализован слой доступа к данным через WPF-интерфейс. При проектировании базы данных, акцент делался на клиентскую часть. На стороне сервера были применены индексы, хранимые процедуры, функции, триггеры, представления. Клиентская часть была реализована посредством языка С# на платформе .NET. В частности: доступ к данным был обеспечен провайдером ADO.NET.

Итогом работы, в соответствии с поставленной задачей, стала работающая, полноценная система бронирования авиабилетов. Данное приложение предоставляет удобный, интуитивно понятный интерфейс для клиентов компании и администраторов. Кроме того, администратор получает возможность выполнять многие операции по сопровождению системы: по добавлению, удалении, редактированию пользователей, рейсов, заказов посредством того же (но уже расширенного в соответствии с его ролью) интерфейса, а также, в завершении, программа способна экспортировать данные в формат CSV для удобного сопровождения.

В процессе выполнения курсового проекта были закреплены знания, полученные при изучении дисциплины "Системы управления распределёнными базами данных". Были изучены такие аспекты как:

1. Сопровождение базы данных

2. Подготовка программной документации

В процессе организации БД проведён до необходимого уровня абстракций анализ предметной области, построены концептуальная и реляционная модель БД, произведена нормализация реляционной БД. Оформляя пояснительную записку, был ознакомлен с государственными стандартами ДСТУ 3008-95.

Список использованной литературы

1. Атре Ш. Структурный подход к организации баз данных. - М.: Финансы и статистика, 1983. - 320 с.

2. Бойко В.В., Савинков В.М. Проектирование баз данных информационных систем. - М.: Финансы и статистика, 1989. - 351 с.

3. Джексон Г. Проектирование реляционных баз данных для использования с микроЭВМ. -М.: Мир, 1991. - 252 с.

4. Кириллов В.В. Структурированный язык запросов (SQL). - СПб.: ИТМО, 1994. - 80 с.

5. Жилинский А.А. Самоучитель Microsoft SQL Server 2005 - СПб.: БХВ-Петербург, 2007. - 224 с.


Подобные документы

  • Анализ возможностей системы управления базами данных "Microsoft Access 2003". Создание базы данных, предназначенной для отражения деятельности аэропорта. Концептуальная и физическая модель базы данных. Создание таблиц, запросов, отчетов и главной формы.

    курсовая работа [1,8 M], добавлен 26.06.2013

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

    курсовая работа [2,1 M], добавлен 17.06.2013

  • Создание реляционной базы данных "Деканат ВУЗа", средствами СУБД MS SQL Server 2000. Разработка клиентского приложения с удобным пользовательским интерфейсом (сопровождающегося меню и справочной системой). Описание связей между таблицами базы данных.

    курсовая работа [3,0 M], добавлен 06.12.2014

  • Автоматизация системы снятия показаний счетчиков энергии. Разработка базы данных и клиентского приложения для структур жилищно-коммунального хозяйства, занимающихся составлением квитанций. Описание предметной области. Тестирование клиентского приложения.

    курсовая работа [953,3 K], добавлен 01.09.2016

  • Разработка приложения, позволяющего автоматизировать документооборот предприятия по списанию основных средств. Мероприятия по защите и обеспечению целостности базы данных. Разработка клиентского приложения. Запросы к базе данных, руководство пользователя.

    курсовая работа [700,0 K], добавлен 14.01.2015

  • Определение понятия и общее описание базы данных как упорядоченной информационной системы на носителе информации. Описание предметной области и разработка приложения базы данных, содержащей информацию о расписании занятий, для преподавателей кафедры.

    курсовая работа [1,3 M], добавлен 08.08.2012

  • Рассмотрение теоретических основ проектирования. Анализ предметной области и разработка таблиц базы данных. Заполнение таблиц, поиск данных с помощью фильтра. Создание форм, разработка запросов. Создание и настройка отчетов, составление приложения.

    курсовая работа [2,8 M], добавлен 01.06.2014

  • Разработка информационной системы "Салон портьер" для автоматизации деятельности менеджера фирмы, занимающейся пошивом портьер на заказ. Создание и обоснование проекта базы данных. Создание запросов, форм, отчетов. Тестирование программного приложения.

    курсовая работа [4,6 M], добавлен 07.02.2016

  • Разработка автоматизированной информационной системы предприятия на основе баз данных, которая обеспечивает качественный контроль данных, автоматизацию документооборота, быстрое составление отчетов. Создание форм, отчетов и макросов, меню базы данных.

    курсовая работа [4,8 M], добавлен 20.05.2014

  • Формирование входных и выходных данных, SQL–скрипт генерации таблиц базы данных. Создание интерфейса программного приложения и проектирование форм базы данных. Требования к аппаратно–программному обеспечению. Инструкции по установке и эксплуатации.

    курсовая работа [1,6 M], добавлен 08.02.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.