Проектирование структуры базы данных
Построим информационную модель системы расчета с абонентами.
В ходе исследования существующей схемы расчетов были выявлены следующие основные сущности:
· Клиент (абонент, владелец телефона)
· Услуга
· Подразделение
· Начисление
· Телефонный разговор, подлежащий повременной тарификации
· Начисление за повременные разговоры (за один день)
· Оплата
· Категория клиента
· Проведенные расчеты
IDEF1X-диаграмма взаимодействия между этими сущностями представлена в Приложении 6.
После нормализации данных и разрешения связей «многие ко многим» путем введения граничных сущностей диаграмма принимает вид, указанный в
Приложении 6. Кроме того, для сущностей «Подразделение» и «Категория абонента» введена обратная неидентифицирующая связь для иерархического представления данных.
Постановка задачи требует наличия механизма поддержки истории для сущностей, влияющих на результаты расчетов. К сущностям, для которых должен поддерживаться механизм регистрации изменений относятся:
· Клиент (владелец телефона)
· Услуга
· Подразделение
· Начисление
· Постоянное начисление
· Категория клиента
Для регистрации изменений используется структура данных, представленная на рис.2.5.
Рис.2.5. Структура данных для поддержки механизма регистрации изменений
Суть данной модели такова:
1. Каждая сущность характеризуется набором состояний, изменяющихся во времени.
2. Каждое состояние характеризуется набором атрибутов сущности, а также датой начала и датой окончания состояния.
3. Сущность однозначно идентифицируется своим внешним ключом и актуальной датой.
4. Дочерние таблицы ссылаются на сущность по её внешнему ключу.
5. При смене состояния внешний ключ не меняется.
Целостность данных обеспечивается с помощью триггеров на сервере.
Для дальнейшего анализа выделим в структуре базы данных несколько подсистем:
· Картотека абонентов
· Начисления
· Повременный учет
После определения атрибутов сущностей схема данных с учетом механизма поддержки истории принимает вид, приведенный в Приложении 6.
SQL-скрипт для генерации базы данных представлен в Приложении 1.