Смекни!
smekni.com

Телефонная компания (стр. 1 из 3)

КУРСОВОЕ ПРОЕКТИРОВАНИЕ ПО БАЗАМ ДАННЫХ

ТЕМА: "Телефонная компания"

Одесса 2010


Аннотация

Объектом исследования является развитие навыков проектирования информационных систем и закрепление знаний, полученных за время изучения дисциплины "Базы данных".

Цель работы – разработка и создание базы данных для предметной области Аварийная служба.

Метод исследования – изучение видов деятельности в служба рекламы, составление и отладка программы, для работы с базой данных (программа написана на языке С++).

Содержание

Введение

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

1.1 Рабочие цели системы

1.2 Этапы проектирования БД

1.3 Концептуальная модель

2. Преобразование модели ER в реляционную модель

3. Запросы к базе данных системы

4. Описание групп пользователей ИС

5. Текст программы

Заключение

Список литературы

Введение

Цель работы: является развитие навыков проектирования информационных систем и закрепление знаний, полученных за время изучения дисциплины "Базы данных".

Задание: предметная область "Реклама в коммерческом издании". Возможные виды деятельности: учет клиентов с возможными льготами; учет совершенных ими заказов по различным направлениям; расчет стоимости заказа с учетом типа, даты продолжительности; оплата клиентами услуг.


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

1.1 Рабочие цели системы

Согласно заданию, программный продукт должен фиксировать такие данные как:

- клиентов с возможными льготами;

- заказклиентов по различным типам;

- стоимость заказа с учетом типа, даты и продолжительности;

- оплата клиентом услуг.

В связи с этим были сформированы следующие таблицы в базе данных:

Клиенты;

Услуги;

Звонки;

Льготы.

А также таблицы, связывающие данные таблицы.

Так же ПП должен выполнять следующие функции:

Вывод списка услуг клиента;

Вывод списка заказов клиента;

Вывод списка клиентов по первым буквам;

Вывод списка заказов за данный промежуток;

Вывод списка заказов в данный промежуток;

Вывод количества клиентов с данным типом услуги;

Вывод количества неоплаченых счетов;

Вывод количества клиентов по услугам;

Вывод количества клиентов по льготам;

Вывод клиента с наибольшим долгом;

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

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

Вывод клиентов, не имеющих льгот;

Вывод клиентов, не имеющих услуг;

Вывод состояний счетов;

Вывод состояний сроков услуг;

Обновить наличие долга;

Обновить отсутствие долга.

1.2 Этапы проектирования БД

После анализа предметной области были сформированы ранее перечисленные таблицы.

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

В таблице "Услуги" и "Льготы" были также выбраны первичные ключи "Идентификатор", т.к. данных полей достаточно для уникального определения данных в таблицах.

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

1.3 Концептуальная модель

2. Преобразование модели ER в реляционную модель

Клиент
Поле Описание Тип Данных Комментарий
id_klient Идентификационный код клиента Счетчик Необходим для уникального определения клиента
surname Фамилия клиента Текстовый Данные о фамилии клиента
ab_name Имя клиента Текстовый Данные об имени клиента
Num Номер телефона Числовой Данные о номера телефона клиента
bill Состояние счета клиента Денежный Текущее состояние счета клиента
More Info Информация о наличие или отсутствии долга Текстовый Дополнительные данные о состоянии счета
Реклама
Поле Описание Тип Данных Комментарий
id_call Идентификационный код рекламы Счетчик Необходим для уникального определения рекламы
id_klient Идентификационный код клиента Числовой Необходим для определения клиента
Data Дата рекламы Дата/время Определение даты рекламы
time_beg Время начала звонка Дата/время Определение времени начала рекламы
time_and Время окончания звонка Дата/время Определение времени окончания рекламы
id_type Код типа рекламы Числовой Определение типа рекламы
Льгота
Поле Описание Тип Данных Комментарий
Id_lgot Идентификационный код льготы Счетчик Необходим для уникального определения льготы
Opisanie Данные о льготе Текстовый Описание льготы
Stoimost Процент от стоимости звонка Числовой Процент от стоимости рекламы
Услуга
Поле Описание Тип Данных Комментарий
Id_service Идентификационный кодуслуги Счетчик Необходим для уникального определения услуги
Opisanie Данные об услуге Текстовый Описание услуги
Stoimost Процент от стоимости звонка Числовой Процент от стоимости звонка

Направление
Поле Описание Тип Данных Комментарий
Id_type Идентификационный код типа Счетчик Необходим для уникального определения типа
Opisanie Данные о типе Текстовый Описание типа
Stoimost Процент от стоимости рекламы Числовой Процент от стоимости рекламы
Оплата
Поле Описание Тип Данных Комментарий
id_oplata Идентификационный код оплаты Счетчик Необходим для уникального определения оплаты
Data Дата оплаты Дата/время Данные о дате внесения оплаты
Summ Внесенная сумма Денежный Данные о внесенной сумме
id_ klient Идентификационный код клиента Числовой Определение клиента, выполнившего оплату
Клиент-льгота
Поле Описание Тип Данных Комментарий
id_lg_ab Идентификационный код клиент-льготы Счетчик Необходим для уникального определения клиент-льготы
Data Дата присвоения льготы Дата/время Данные о дате присвоения льготы
Srok Дата завершения льготы Дата/время Данные о дате завершения льготы
id_lgot Идентификационный код льготы Числовой Определение присвоенной льготы
id_klient Идентификационный код клиента Числовой Определение клиента
Клиент-услуга
Поле Описание Тип Данных Комментарий
id_ys_ab Идентификационный код клиент-услугы Счетчик Необходим для уникального определения клиент-услугы
Data Дата присвоения услуги Дата/время Данные о дате присвоения услуги
Srok Дата завершения услуги Дата/время Данные о дате завершения услуги
id_lgot Идентификационный код услуги Числовой Определение присвоенной услуги
id_klient Идентификационный код клиента Числовой Определение клиента

3. Запросы к базе данных системы

Вывод списка услуг клиента

SELECT A.id_service, A.opisanie, C.surname FROM services AS A, ys_ab AS B, Klient AS C WHERE A.id_service=B.id_service and B.id_klient=C.id_klient and C.surname=(Фамилия_Пользователя)

Выводсписказвонковклиента

SELECT A.id_call, A.data, A.time_beg, A.time_and, C.opisanie, B.surname FROM Call AS A, Klient AS B, Napravlenie AS C WHERE A.id_klient=B.id_klient And A.id_napravlenie=C.id_napravlenie And B.surname=(Фамилия_Пользователя)

Вывод списка клиентов по первым буквам

SELECT * FROM Klient WHERE surname like Первые_буквы%

Вывод списка клиентов по первым цифрам

SELECT * FROM Klient WHERE num like Первые_цифры%

Вывод списка звонков за данный промежуток

SELECT * FROM call WHERE data Between Начальная_Дата and Конечная_Дата

Вывод списка услуг в данный промежуток

SELECT A.Data, A.Srok, B.Surname FROM ys_ab AS A, Klient AS B WHERE A.id_klient=B.id_klient and A.Data between Начальная_Дата and Конечная_Дата

Вывод количества клиентов с данной услугой

SELECT Count(*) FROM services WHERE services.id_service=Идентификато_услуги

Вывод количества отрицательных счетов

SELECTcount(*) FROMKlientWHEREbill<0;

Вывод количества клиентов по услугам

SELECT A.id_service, B.opisanie, Count(*) FROM ys_ab AS A, services AS B WHERE A.id_service=B.id_service GROUP BY A.id_service, B.opisanie;

Выводколичестваклиентовпольготам

SELECT A.id_lgot, B.opisanie, Count(*)FROM lg_ab AS A, lgot AS B WHERE A.id_lgot=B.id_lgot GROUP BY A.id_lgot, B.opisanie;

Выводклиентаснаибольшимдолгом

SELECT * FROM klient AS A WHERE bill<= ALL (select bill from klient );

Выводклиентов, имеющихуслуги

SELECT * FROM klient AS A WHERE A.id_klient =ANY (select B.id_klient from ys_ab AS B);

Для каждой льготы определить клиента с наименьшим сроком льготы

SELECT A.opisanie, B.surname, B.ab_name FROM lgot AS A, klient AS B, lg_ab AS C WHERE A.id_lgot=C.id_lgot AND B.id_klient=c.id_klient AND C.srok<=All (select Srok from lg_ab where lg_ab.id_lgot=A.id_lgot);

Для каждой услуги определить клиента с наименьшим сроком услуги

SELECT A.opisanie, B.surname, B.ab_name FROM services AS A, klient AS B, ys_ab AS C WHERE A.id_service=C.id_service AND B.id_klient=c.id_klient AND C.srok<=All (select Srok from ys_ab where ys_ab.id_service=A.id_service);