Проектирум БД учета инцидентов

maxon

Новичок
Проектируем БД учета инцидентов

Столкнулся с трудностями при проектировании ИС для телекоммуникационного бизнеса. Существуют сущность "Инцидент" - жалоба от абонента, партнера или внутреннего сотрудника тел. компании.

Также имеются такие сущности как:
"Абонент" - абонент телекоммуникационной компании.
"Партнер" - компания-оператор, с которой имеется общий канал связи.
"Сотрудник" - сотрудник компании.

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

Примерная структура этих сущностей:

Инцидент
-ID инцидента
-ID инициатора (FK)
-ID ответственного (FK)
описание
статус

FK - наследуемый ключ

Абонент
-ID абонента
-ID объекта
-номер договора
-имя
-адрес


Партнер
-ID парнтера
-имя

Сотрудник
-ID сотрудника
-ID отдела
-имя
-телефон


В данной системе"инициатором" может являться любое лицо из "Абонентов", "Сотрудников", и "Партнеров", и в свою очередь, "ответственным" может являться как "Сотрудник", так и "Партнер" компании. Т.е. моей целью является такой вариант, когда при регистрации инцидента в БД можно назначать "инициатором" и "ответственным" любого из этих лиц, но хранить всех "инициаторов" и "ответственных" в одной таблице было бы нецелесообразно. Я предполагаю что должны появиться отдельный таблицы "инициатор" и "ответственный", но не могу понять как через них увязывать "партнеров", "сотрудников" и "абонентов".

Каким образом правильно сформировать структуру БД?
 

kseen

Новичок
Каким образом правильно сформировать структуру БД?
Посоветую задать вопрос поконкретнее, т.к. наврядли кто будет отвечать на столь обширный вопрос.
 

maxon

Новичок
Автор оригинала: kseen
Посоветую задать вопрос поконкретнее, т.к. наврядли кто будет отвечать на столь обширный вопрос.
По-моему конкретней не скажешь, все сущности описаны, связи между ними тоже.
 

baev

‹°°¬•
Команда форума
Не пойму, в чём сложность?

Две однотипные таблицы — с одинаковыми наборами полей.
(Чё-то счас не соображу — может, и одной таблицы хватит?)

— ID ответственного (инициатора);
— «флаг» таблицы (типа, 0 = «сотрудник», 1 = «партнёр»...);
— ID сотрудника/партнёра/абонента.

Вообще, мне кажется, что лучше было бы использовать систему идентификаторов единую для всех контрагентов — типа, «сквозную нумерацию».

Контрагенты
— ID;
— флаг (типа, 0 = «сотрудник», 1 = «партнёр»...)

Поля таблицы Партнер, например, поменяются на:
— ID (из «Контрагентов»);
— имя.
 
Сверху