У меня есть программа, которая может перебирать группу сообщений, сравнивать каждое сообщение с набором правил и, если оно проходит, выполнять такие действия, как отправка электронного письма, отправка текстового сообщения или запись сообщения в каталог
Этот вопрос касается разработки базы данных, которая будет содержать все правила и действия, которые будут предприниматься для каждого правила.
Вот как я хочу создать свою базу данных:
========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» будет равняться «тексту» и полю телефона будет заполнено.
Есть ли лучший дизайн для того, что я пытаюсь сделать?