Хранить и запрашивать бизнес-правило

У меня есть вопрос, связанный с бизнес-правилами. Пусть у нас есть учетная запись объекта с некоторыми свойствами (количество, имя, тип и т. д.), для которых мы определяем бизнес-правила.

Я храню свои правила в таблице базы данных следующим образом

Rule_id | Field | Operator | value . 

Правило может иметь вид , amount > 1000, name ="abc", type="x" и т. д. Правила группируются и сопоставляются с пользователем.

Учетные записи создаются в системе, и администратор должен их одобрить. Когда администратор входит в систему на основе своего набора правил, администратор должен видеть соответствующие учетные записи.

Например, если для администратора задано правило суммы> 500, то любая учетная запись меньше 500 ему не показывается.

Мой вопрос - лучший способ реализовать его в базе данных, как запрашивать, чтобы соответствующие учетные записи могли быть получены в зависимости от базового набора правил.


person Arnet11    schedule 04.07.2012    source источник


Ответы (2)


создать пользовательскую таблицу примерно так

пользователи

 userId | Username | UserType | Rule_id

когда пользователь входит в систему, присоединяйтесь к пользовательской таблице с таблицей правил по Rule_id и создавайте условие, используя такой запрос

select 'Select * from Account where '+Field+Operator+value from rules   
where Rule_id=1

Результат этого запроса даст другой запрос sql при выполнении того же самого, чтобы получить учетные записи, доступные для этого пользователя.

результат вышеуказанного запроса

Select * from Account where amount>1000
person Joe G Joseph    schedule 04.07.2012

То, что вы описываете, очень похоже на мелкозернистый контроль доступа Oracle (также известный как виртуальная частная база данных). Это в первую очередь инструмент безопасности, но его можно использовать для обеспечения соблюдения общих бизнес-правил. Подробнее.

Даже если вы решите не использовать FGAC (или не сможете, потому что у вас нет Enterprise Edition), он даст вам несколько советов о том, как реализовать решение: используйте sys_context и пространства имен для хранения правил и представления, ссылающиеся на функции sys_context, для применять их.

person APC    schedule 20.01.2013