Московский Энергетический Институт

(Технический Университет)















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

по дисциплине:


«Базы данных и экспертные системы»



















студент: Ясенков Е.М.

группа: А-13-03







Москва 2006

Постановка задачи.


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

Основные операции бизнес-процесса фирмы:

  • Прием заказов от клиентов;

  • Ведение БД клиентов;

  • Определение стоимости и сроков выполнения заказов;

  • Распределение заказов по исполнителям;

  • Учет исполнения заказов;

  • Формирование сопроводительных документов.


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


Предметная область включает в себя пять сущностей:


1) сущность "Отдел доставки";

2) сущность "Бухгалтерия";

3) сущность "Отдел приема заказов";

4) сущность "Водитель";

5) сущность "Город";


В БД каждой сущности предметной области соответствует своя таблица.


Структура таблицы " Отдел доставки " включает следующие поля:


  1. Код заказа - цифровое поле (целое число от 1 до 10000);

  1. Код водителя - цифровое поле (целое число от 1 до 500);

  1. Код договора - цифровое поле (целое число от 1 до 10000);

  1. Дата договора - символьное поле (20 символов);

  1. Название договора - символьное поле (20 символов);


Структура таблицы "Бухгалтерия" включает следующие поля:


  1. Код заказа - цифровое поле (целое число от 1 до 10000);

  1. Код водителя - цифровое поле (целое число от 1 до 500);

  1. Код договора - цифровое поле (целое число от 1 до 10000);

  1. Код бухгалтера - цифровое поле (целое число от 1 до 500);

  1. Стоимость - символьное поле (20 символов);

  1. Вид оплаты - символьное поле (20 символов);

  1. Срок выплаты - символьное поле (20 символов);

  2. ФИО бухгалтера - символьное поле (40 символов);


Структура таблицы "Отдел приема заказов" включает следующие поля:


1.Код заказа - цифровое поле (целое число от 1 до 10000);

2.Кол-во ж/д билетов - цифровое поле (целое число от 1 до 300);

3. Кол-во авиа-билетов - цифровое поле (целое число от 1 до 300);

4.ФИО клиента - символьное поле (40 символов);

5.Код города - цифровое поле (целое число от 1 до 100);


Структура таблицы "Водитель" включает следующие поля:


1. Код водителя - цифровое поле (целое число от 1 до 500);

2. ФИО водителя - символьное поле (40 символов);

3.Нагрузка - цифровое поле (целое число от 1 до 144);

4. Код города - цифровое поле (целое число от 1 до 100);


Структура таблицы "Город" включает следующие поля:


1. Код города - цифровое поле (целое число от 1 до 100);

2.Название города - символьное поле (20 символов);


Логическая схема в ERwin



Физическая схема в ERwin


Создание Базы данных в Microsoft SQLserver 2000


CREATE DATABASE db

ON

(

NAME = db_data

FILENAME = ‘D:\db.mdf’

SIZE = 10MB

MAXSIZE = 50MB

FILEGROWTH = 5MB

)


При помощи средств ERwin переносим наши таблицы во вновь созданную базу данных db:


Целостность и защита данных.


  1. Создание контрольных ограничений на уровне поля.


Таблица Отдел доставки:


alter table Otdel_dostavki

add constraint Cod_zakaz check (Cod_zakaz between 1 and 10000)

alter table Otdel_dostavki

add constraint Cod_voditel check (Cod_voditel between 1 and 500)

alter table Otdel_dostavki

add constraint Cod_dogovora check (Cod_dogovora between 1 and 10000)

alter table Otdel_dostavki

add constraint data_dogovora check (data_dogovora between '00.00.00' and '31.12.20')

alter table Otdel_dostavki

add constraint Name_dogovora check (Name_dogovora between 'дог00000' and 'дог10000')


Таблица "Бухгалтерия"


alter table Buhalteria

add constraint Cod_buhgalter check (Cod_buhgalter between 1 and 500)

alter table Buhalteria

add constraint stoimost check (stoimost like '%руб')

alter table Buhalteria

add constraint vyd_oplaty check (vyd_oplaty in ('Кредит','Дисконтная карта','Наличные'))


Таблица "Отдел приема заказов"


alter table Priem_Zakaza

add constraint Kol_avia check (Kol_avia between 0 and 300)

alter table Priem_Zakaza

add constraint Kol_gd check (Kol_gd between 0 and 300)


Таблица "Водитель"


alter table Voditel

add constraint Nagruzka check (Nagruzka between 1 and 144)


2) Ограничения отслеживаемые SQL – сервером на уровне внешних ключей:


а) Нельзя добавить расчет для рассмотрения в бухгалтерию по не существующему в базе данных заказу

б) Нельзя добавить расчет договор для рассмотрения в бухгалтерию с несуществующем кодом водителя

в) Нельзя добавить договор в отдел доставки по не существующему в базе данных заказу

г) Нельзя добавить договор в отдел доставки с несуществующем кодом водителя



Заполнение базы данных.


Для заполнения базы данных используется оператор INSERT. Ограничения целостности не позволяют добавить в базу неверные данные.


Фрагменты таблиц базы данных:


Таблица Отдел доставки



Таблица "Бухгалтерия"



Таблица "Отдел приема заказов"



Таблица "Водитель"



Таблица "Город"




Примеры запросов к базе данных.


1) Получить в отделе доставки данные обо всех договорах. Отчет должен включать название договора и дату заключения договора.


select name_dogovora,data_dogovora

from Otdel_dostavki


Результат(фрагмент):



2) Получить данные обо всех водителях работающих в Москве. Отчет должен содержать ФИО водителя, его нагрузку и город в котором он работает.


select FIO,Nagruzka,Gorod.Nazvanie

from Voditel join Gorod on Voditel.Cod_gorod=Gorod.Cod

where Cod_gorod=1


Результат(фрагмент):


3) Получить объемные данные о заказе. Отчет должен включать: ФИО клиента, кол-во купленных ж/д билетов, кол-во купленных авиа – билетов, название договора по заказу, дату договора по заказу, стоимость, вид оплаты, сроки выплаты.


SelectFIO_client, Kol_gd,Kol_avia,Otdel_dostavki.name_dogovora,

Otdel_dostavki.data_dogovora, Buhalteria.Stoimost, Buhalteria.Vyd_oplaty,

Buhalteria.srok_vyp

from Priem_Zakaza join Otdel_dostavki onPriem_Zakaza.Cod_zakaz =Otdel_dostavki.Cod_zakaz

join Buhalteria on Buhalteria.Cod_zakaz = Otdel_dostavki.Cod_zakaz


Результат(фрагмент):





Случайные файлы

Файл
79305.rtf
ref-20796.doc
301.doc
55311.rtf
154291.rtf




Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.