Управляемые данными бизнес-правила. - PullRequest
5 голосов
/ 30 июля 2011

Я использую SQL SERVER 2005.

У меня есть таблица

table1(ID,col1,col2,col3,col4);

Теперь у меня есть бизнес-логика, такая как:

If col1 >= 126 and col2 > 1 then col3 = 0
if col1 >=126 and col2 < 1 then col3 = col1+col4

Теперь, кто яПопытка сделать это сохранить все эти правила в базе данных и сделать его управляемым данными.Причина этого в том, чтобы предоставить конечному пользователю больше гибкости.Если завтра бизнес-правила изменятся, конечный пользователь сможет изменить его через графический интерфейс.Например,если завтра бизнес захочет изменить значение сравнения со 126 до 200, он сможет изменить это через интерфейс.Насколько это возможно, я пытаюсь придать гибкость, например, возможность изменять столбцы, так как бизнес должен изменить правило, чтобы вместо col1 они могли изменить новые правила на col2.и, если возможно, они также могут иметь возможность менять операторы вместо> =, они могут изменить его на <=. </p>

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

Возможно ли сделать это в базе данных?Может ли кто-нибудь предложить модель данных, которая поддерживает эти бизнес-правила, для управления данными?

1 Ответ

8 голосов
/ 30 июля 2011

Не хранить код в базе данных. База данных для данных. Код для кода.

См. эффект внутренней платформы антипаттерн.

Maaaybe вы можете хранить значения, такие как ваши 126 и 200, в базе данных, но я бы поместил их в файл конфигурации. Но как только пользователям требуется такая гибкость, что вам необходимо разработать для них механизм бизнес-правил, управляемых данными, вы полностью изобретаете колесо.

Это будет кошмар для вас следующими способами:

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

Обновление: существуют платформы бизнес-правил, такие как Drools , но у них должен быть свой язык для выполнения бизнес-правил. SQL не лучший язык для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...