Дизайн базы данных AlertRules / AlertAction - PullRequest
0 голосов
/ 18 августа 2011

У меня есть программа, которая может перебирать группу сообщений, сравнивать каждое сообщение с набором правил и, если оно проходит, выполнять такие действия, как отправка электронного письма, отправка текстового сообщения или запись сообщения в каталог

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

Вот как я хочу создать свою базу данных:

    ========Rules========
UniqueID        int 
DateStamp       dateTime
RuleStartDate   dateTime
RuleEndDate     dateTime
[condition 1]   varchar
[condition 2]   varchar
...
ActionMethod    int <--Related to the ID of the ActionMethod table
ActionMethodID  int <--what table it relates to depends on the value of ActionMethod

=====ActionMethod=======    
ID              int
ActionMethod    varchar

{this table will have entries like:
10  E-Mail
20  WriteToDir
30  Text}

=======E-mail===========    
ActionMethodID  int
MailTo          varchar
MailFrom        varchar
MailSubject     varchar
MailBody        varchar
IsUrgent        bool

======WriteToDir======= 
ActionMethodID  int
DirToWriteTo    varchar

=======Text============ 
ActionMethodID  int
phoneNumber     varchar

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

    ========Rules========
UniqueID        int 
DateStamp       dateTime
RuleStartDate   dateTime
RuleEndDate     dateTime
[condition 1]   varchar
[condition 2]   varchar
...
ActionMethod    varchar
MailTo          varchar
MailFrom        varchar
MailSubject     varchar
MailBody        varchar
IsUrgent        bool
DirToWriteTo    varchar
phoneNumber     varchar

Предполагается, что если человеку требуется электронная почта, чем «ActionMethod» будет равно «электронная почта» и все поля электронной почты заполнены, или если человеку нужно текстовое сообщение, то «ActionMethod» будет равняться «тексту» и полю телефона будет заполнено.

Есть ли лучший дизайн для того, что я пытаюсь сделать?

1 Ответ

0 голосов
/ 19 августа 2011

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

...