Разработка базы данных 'Рабочее место дежурного инженера связи'
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
. АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ И ИНФОЛОГИЧЕСКОЕ
ПРОЕКТИРОВАНИЕ
.1 Информационная модель предметной области
.2 Спецификации сущностей
.3 Спецификации атрибутов
.4 Спецификации связей
.5 Ограничения ссылочной целостности
.6 Запросы пользователей
. ДАТАЛОГИЧЕСКОЕ ПРОЕКТИРОВАНИЕ
.1 Даталогическая модель базы данных
.2 Спецификации таблиц
.3 Спецификации связей
.4 SQL - запросы
. РАБОЧЕЕ ПРОЕКТИРОВАНИЕ
.1 Схема данных
.2 Интерфейс конечного пользователя
.3 Инструкция для пользователя
ВЫВОДЫ
ЛИТЕРАТУРА
ВВЕДЕНИЕ
База данных «Рабочее место дежурного инженера связи» предназначена для
автоматизации работы дежурной службы телекоммуникационной компании. В базе
хранятся данные об абонентах, договорах на предоставление услуг связи,
сотрудниках компании, а также технические данные оборудования АТС.
Для организации качественного сервиса в плане предоставления услуг
оператор базы данных должен оперативно получать информацию о том, какие услуги
подключены абоненту, существует ли техническая возможность предоставления
определенных услуг и на основании этих данных выдавать наряды сотрудникам
компании.
Абонент компании однозначно идентифицируется его уникальным номером (ID).
Абонент заключает с компанией договор на предоставление услуг связи и
дополнительных услуг. У одного абонента может быть заключено несколько
договоров - это определяется кол-вом телефонных номеров у абонента. Договор
идентифицируется по ID абонента, ID услуги и табельному номеру сотрудника,
ведущего договор. В рамках одного договора абоненту может быть подключено
несколько дополнительных услуг. Один сотрудник компании может вести несколько
договоров. Абонент также связан через номер телефона с техническими данными
АТС.
Целью данной работы является автоматизация работы дежурной службы
телекоммуникационной компании и предоставление качественного сервиса для
абонентов.
1.
АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ И ИНФОЛОГИЧЕСКОЕ ПРОЕКТИРОВАНИЕ
1.1 Информационная модель предметной области
В среде AllFusion ERwin Data Modeler разработаем информационную модель предметной области
в терминах модели сущность - связь. Результат разработки в виде инфологической
модели представлен на рис. 1.
Рис. 1 Инфологическая модель предметной области
1.2 Спецификации сущностей
база данные пользователь телекоммуникационный
Создадим отчет в среде ERwin
при помощи генератора отчетов. Результаты сведены в таблицу 1.1.
Таблица 1.1
Спецификации сущностей
Имя сущности
|
Описание сущности
|
Абонент
|
Содержит сведения об
абонентах компании
|
Данные КРОССа
|
Содержит сведения о
технических данных оборудования АТС
|
Договор
|
Договор на оказание услуг
компанией абоненту. Содержит сведения о том, какие услуги подключены
абоненту, какие сотрудники ведут договор, даты заключения и окончания
договора
|
Сотрудник
|
Сотрудники компании,
ответственные исполнители по договорам абонентов с компанией
|
Услуга
|
Услуги связи,
предоставляемые компанией абоненту на основании договора
|
1.3 Спецификации атрибутов
Создадим отчет в среде ERwin
при помощи генератора отчетов. Результаты сведены в таблицу 1.2.
Таблица 1.2
Спецификации атрибутов сущностей
Имя сущности
|
Имя атрибута
|
Описание атрибута
|
Первичный ключ
|
Внешний ключ
|
Домен (тип)
|
Договор
|
ID услуги
|
Номер ID услуги
|
Yes
|
Yes
|
Number
|
|
Табельный номер
|
Табельный номер сотрудника,
ведущего договор
|
Yes
|
Yes
|
Number
|
|
ID абонента
|
Номер ID
абонента
|
Yes
|
Yes
|
String
|
|
Номер договора
|
|
No
|
Number
|
|
Дата заключения
|
|
No
|
No
|
Datetime
|
|
Дата завершения
|
|
No
|
No
|
Datetime
|
Абонент
|
ID абонента
|
|
Yes
|
Yes
|
String
|
|
ФИО абонента
|
|
No
|
No
|
String
|
|
Адрес
|
|
No
|
No
|
String
|
|
Номер телефона
|
|
No
|
Yes
|
Number
|
Услуга
|
ID услуги
|
|
Yes
|
No
|
Number
|
|
Наименование услуги
|
|
No
|
No
|
String
|
Данные КРОССа
|
Номер телефона
|
|
Yes
|
No
|
Number
|
|
ID абонента
|
|
Yes
|
No
|
String
|
|
Номер платы
|
|
No
|
No
|
String
|
|
Название платы
|
|
No
|
No
|
String
|
|
Номер порта
|
|
No
|
No
|
Number
|
|
Номер станционной стороны
|
|
No
|
No
|
String
|
|
Номер линейной стороны
|
|
No
|
No
|
String
|
Сотрудник
|
Табельный номер
|
|
Yes
|
No
|
Number
|
|
ФИО сотрудника
|
No
|
String
|
|
Должность
|
|
No
|
No
|
String
|
1.4 Спецификации связей
Создадим отчет в среде ERwin
при помощи генератора отчетов. Результаты сведены в таблицу 1.3.
Таблица 1.3
Спецификации связей в иерархии агрегации
Имя связи
"отец-сын"
|
Тип связи
|
Null внешнего ключа
|
Кардинальность связи
|
Описание связи
|
Имя отцовской сущности
|
Имя сыновьей сущности
|
Соответствует
|
Non-identifying
|
Nulls Allowed
|
Zero-or-One-to-Zero-One-or-More
|
|
Данные КРОССа
|
Абонент
|
Предоставлена на
|
Identifying
|
|
One-to-One-or-More
(P)
|
|
Услуга
|
Договор
|
Исполняет
|
Identifying
|
|
|
|
Сотрудник
|
|
Заключил
|
Identifying
|
|
One-to-Zero-or-One
(Z)
|
|
Абонент
|
|
1.5 Ограничения ссылочной целостности
Создадим отчет в среде ERwin
при помощи генератора отчетов. Результаты сведены в таблицу 1.4.
Таблица 1.4
Ограничения ссылочной целостности
Имя связи
"отец-сын"
|
Тип связи
|
Null внешнего ключа
|
Вставка в отцовской
|
Обновление в отцовской
|
Удаление в отцовской
|
Вставка в сыновьей
|
Обновление в сыновьей
|
Удаление в сыновьей
|
Заключил
|
Identifying
|
|
|
Restrict
|
Restrict
|
Restrict
|
Restrict
|
|
Соответствует
|
Non-identifying
|
Nulls Allowed
|
|
Set Null
|
Set Null
|
Set Null
|
Set Null
|
|
Исполняет
|
Identifying
|
|
|
Restrict
|
Restrict
|
Restrict
|
Restrict
|
|
Предоставлена на
|
Identifying
|
|
|
Restrict
|
Cascade
|
Restrict
|
|
1.6 Запросы пользователей
Сформулируем содержательные запросы, которые могут представлять интерес
для потенциальных пользователей системы:
) Поиск абонента по номеру телефона.
) Предоставить список услуг компании.
) Предоставить технические данные телефонного номера (абонентская
карточка).
) Удаление абонента по номеру телефона.
) Предоставить список договоров, которые ведет один сотрудник.
) Добавление нового абонента в базу данных.
) Предоставить список услуг, подключенных абоненту.
) Подключение дополнительных услуг абоненту.
) Добавление новой услуги в список дополнительных услуг.
) Изменение фамилии абонента.
2.
ДАТАЛОГИЧЕСКОЕ ПРОЕКТИРОВАНИЕ
2.1 Даталогическая модель базы
данных
Разработаем концептуальную даталогическую модель базы данных в среде AllFusion ERwin Data Modeler. Для реализации разработанной инфологической модели
выберем СУБД Microsoft Access. На рис.2 представлена СУБД - ориентированная ER - диаграмма.
Рис. 2 СУБД (Access) -
ориентированная модель предметной области
2.2 Спецификации таблиц
Рассмотрим структуру таблиц и создадим по ней отчет в среде ERwin при помощи генератора отчетов.
Результаты сведены в таблицу 2.1.
Таблица 2.1
Структура реляционных таблиц
Имя таблицы
|
Имя столбца
|
Домен (тип)
|
Null - значение
|
Первичный ключ
|
Внешний ключ
|
Договор
|
Номер договора
|
Long Integer
|
NULL
|
No
|
No
|
|
Табельный номер сотрудника
|
|
|
|
|
|
Дата заключения
|
Date/Time
|
|
|
|
|
Дата завершения
|
|
|
|
|
|
Табельный номер
|
Long Integer
|
NOT NULL
|
Yes
|
Yes
|
|
ID абонента
|
Text(20)
|
|
|
|
|
ID услуги
|
Long Integer
|
|
|
|
Абонент
|
ID абонента
|
Text(20)
|
|
|
|
|
ФИО абонента
|
|
|
No
|
No
|
|
Адрес
|
|
|
|
|
|
Номер телефона
|
Long Integer
|
NULL
|
|
Yes
|
Услуга
|
ID услуги
|
|
NOT NULL
|
Yes
|
No
|
|
Наименование услуги
|
Text(20)
|
|
No
|
|
Данные КРОССа
|
Номер телефона
|
Long Integer
|
|
Yes
|
|
|
Номер платы
|
Text(20)
|
NULL
|
No
|
|
|
|
|
|
Номер порта
|
Long Integer
|
|
|
|
|
Номер станционной стороны
|
Text(20)
|
|
|
|
|
Номер линейной стороны
|
|
|
|
|
|
ID абонента
|
|
NOT NULL
|
Yes
|
|
Сотрудник
|
ФИО сотрудника
|
|
|
No
|
|
|
Табельный номер
|
Long Integer
|
|
Yes
|
|
|
Должность
|
Text(20)
|
|
No
|
|
2.3 Спецификации связей
Рассмотрим структуру таблиц и создадим по ней отчет в среде ERwin при помощи генератора отчетов.
Результаты сведены в таблицу 2.2.
Таблица 2.2
Структура связей между таблицами
Имя связи
|
Имя отцовской таблицы
|
Первичный ключ отцовской
таблицы
|
Имя сыновьей таблицы
|
Первичный ключ сыновьей
таблицы
|
Внешний ключ сыновьей
таблицы
|
Заключил
|
Абонент
|
ID абонента
|
Договор
|
ID услуги
|
ID абонента
|
|
|
|
|
Табельный номер
|
|
|
|
|
|
ID абонента
|
|
Соответствует
|
Данные КРОССа
|
Номер телефона
|
Абонент
|
|
Номер телефона
|
|
|
ID абонента
|
|
|
ID абонента
|
Исполняет
|
Сотрудник
|
Табельный номер
|
Договор
|
ID услуги
|
Табельный номер
|
|
|
|
|
Табельный номер
|
|
|
|
|
|
ID абонента
|
|
Предоставлена на
|
Услуга
|
ID услуги
|
|
ID услуги
|
ID услуги
|
|
|
|
|
Табельный номер
|
|
|
|
|
|
ID абонента
|
|
Представим ограничения ссылочной целостности при манипулировании строками
таблицы. Создадим отчет в среде ERwin
при помощи генератора отчетов. Результаты сведены в таблицу 2.3.
Таблица 2.3
Ограничения ссылочной целостности
Имя связи
"отец-сын"
|
Тип связи
|
Null внешнего ключа
|
Вставка в отцовской
|
Обновление в отцовской
|
Удаление в отцовской
|
Вставка в сыновьей
|
Обновление в сыновьей
|
Удаление в сыновьей
|
Заключил
|
Identifying
|
Restrict
|
Restrict
|
Restrict
|
|
Соответствует
|
Non-identifying
|
Nulls Allowed
|
|
Set Null
|
Set Null
|
Set Null
|
Set Null
|
|
Исполняет
|
Identifying
|
|
|
Restrict
|
Restrict
|
Restrict
|
Restrict
|
|
Предоставлена на
|
Identifying
|
|
|
Restrict
|
Cascade
|
Restrict
|
Restrict
|
|
2.4
SQL - запросы
Составим запросы на языке запросов SQL, сформулированные ранее на естественном языке (см. п.
1.6):
) Поиск абонента по номеру телефона.Абонент.[ID абонента],
Абонент.[ФИО абонента], Абонент.АдресАбонент(((Абонент.[Номер
телефона])=[Введите номер телефона:]));
) Предоставить список услуг компании.Услуга.[ID услуги],
Услуга.[Наименование услуги]Услуга;
) Предоставить технические данные телефонного номера (абонентская
карточка).[Данные КРОССа].[Номер телефона], Абонент.[ФИО абонента],
Абонент.Адрес, [Данные КРОССа].[Номер станционной стороны], [Данные
КРОССа].[Номер линейной стороны], [Данные КРОССа].[Номер порта], [Данные
КРОССа].[Номер платы], [Данные КРОССа].[Название платы][Данные КРОССа] INNER
JOIN Абонент ON ([Данные КРОССа].[Номер телефона] = Абонент.[Номер телефона])
AND ([Данные КРОССа].[ID абонента] = Абонент.[ID абонента])((([Данные
КРОССа].[Номер телефона])=[Введите номер телефона:]));
) Удаление абонента по номеру телефона.Абонент.[ID абонента],
Абонент.[ФИО абонента], Абонент.Адрес, Абонент.[Номер
телефона]Абонент(((Абонент.[Номер телефона])=[Введите номер телефона:]));
) Предоставить список договоров, которые ведет один
сотрудник.Сотрудник.[Табельный номер], Сотрудник.[ФИО сотрудника], Сотрудник.Должность,
Договор.[Номер договора], Договор.[ID услуги], Услуга.[Наименование услуги],
Договор.[ID абонента], Договор.[Дата заключения], Договор.[Дата
завершения]Услуга INNER JOIN (Сотрудник INNER JOIN Договор ON
Сотрудник.[Табельный номер] = Договор.[Табельный номер]) ON Услуга.[ID услуги]
= Договор.[ID услуги](((Сотрудник.[Табельный номер])=[Введите табельный
номер:]));
) Добавление нового абонента в базу данных.INTO Абонент ( [ID
абонента], [ФИО абонента], Адрес, [Номер телефона] )Абонент.[ID абонента],
Абонент.[ФИО абонента], Абонент.Адрес, Абонент.[Номер
телефона]Абонент(((Абонент.[ID абонента])=[Введите ID номер:]) AND
((Абонент.[ФИО абонента])=[Введите ФИО:]) AND ((Абонент.Адрес)=[Введите
адрес:]) AND ((Абонент.[Номер телефона])=[Введите номер телефона:]));
) Предоставить список услуг, подключенных абоненту.Абонент.[ФИО
абонента], Абонент.[Номер телефона], Договор.[Номер договора], Договор.[Дата
заключения], Договор.[Дата завершения], Услуга.[ID услуги],
Услуга.[Наименование услуги]Услуга INNER JOIN (Абонент INNER JOIN Договор ON
Абонент.[ID абонента] = Договор.[ID абонента]) ON Услуга.[ID услуги] =
Договор.[ID услуги](((Абонент.[Номер телефона])=[Введите номер телефона:]));
) Подключение дополнительных услуг абоненту.INTO Договор ( [Номер
договора], [ID услуги], [Дата заключения], [Дата завершения], [Табельный
номер], [ID абонента] )Договор.[Номер договора], Договор.[ID услуги],
Договор.[Дата заключения], Договор.[Дата завершения], Договор.[Табельный
номер], Договор.[ID абонента]Услуга INNER JOIN (Абонент INNER JOIN Договор ON
Абонент.[ID абонента] = Договор.[ID абонента]) ON Услуга.[ID услуги] =
Договор.[ID услуги](((Договор.[Номер договора])=[Номер договора:]) AND
((Договор.[ID услуги])=[ID услуги:]) AND ((Договор.[Дата заключения])=[Дата
начала:]) AND ((Договор.[Дата завершения])=[Дата окончания:]) AND
((Договор.[Табельный номер])=[Таб. номер сотр.:]) AND ((Договор.[ID
абонента])=[ID абонента:]) AND ((Абонент.[Номер телефона])=[Номер телефона:]));
) Добавление новой услуги в список дополнительных услуг.INTO
Услуга ( [ID услуги], [Наименование услуги] )Услуга.[ID услуги],
Услуга.[Наименование услуги]Услуга(((Услуга.[ID услуги])=[Введите ID услуги:])
AND ((Услуга.[Наименование услуги])=[Введите наименование услуги:]));
) Изменение фамилии абонента.Абонент SET Абонент.[ФИО абонента] =
[Введите новую фамилию:](((Абонент.[ФИО абонента])=[Введите изменяемую
фамилию:]));
3.
РАБОЧЕЕ ПРОЕКТИРОВАНИЕ
3.1 Схема данных
Рассмотрим схему спроектированной базы данных в СУБД Microsoft Access (рис. 3).
Рис. 3 Схема спроектированной базы данных
3.2 Интерфейс конечного пользователя
На рис. 4 представлен внешний вид формы интерфейса пользователя системы.
Рис. 4 Интерфейс пользователя
3.3 Инструкция для пользователя
Форма «Абонент» содержит данные об абонентах компании, подключенных
услугах и сотрудниках, которые ведут договор данного абонента. Есть возможность
вывода на экран или на печать отчетов по таблицам и запросам посредством кнопок
с соответствующими надписями.
ВЫВОДЫ
Разработанная база данных автоматизирует работу дежурной службы
телекоммуникационной компании, что облегчает и ускоряет процесс поиска
необходимой информации и, в конечном итоге, улучшает качество обслуживания
абонентов.
ЛИТЕРАТУРА
1. Michael Pinkus,
Alexsander Mustafin. Руководство по
программному пакету ERwin (<http://infocity.spedia.net/>).
. Хомоненко А.Д., Цыганков
В.М., Мальцев М.Г. Базы данных: Учебник для высших учебных заведен /Под ред.
проф. А.Д. Хомоненко.- Издание второе, дополненное и переработанное - СПб.:
КОРОНА принт, 2002, 672 с.