Пользователи должны создавать динамические правила, которые применяют к другим пользователям доступ к группе. - PullRequest
1 голос
/ 13 ноября 2009

Хорошо, вот "в двух словах", что я пытаюсь сделать ...

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

Пример: Возраст: 12 - 16 лет Высота: 5 - 6 футов

Таблица данных, в которой хранятся правила, будет выглядеть так: Разрешить или запретить флаг (Y / N) AgeStart: 12 AgeEnd: 16 Высота запуска: 5 ВысотаEnd: 6

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

Имеет ли это смысл? Также могут быть правила ИСКЛЮЧЕНИЯ, которые противоречат этому ... например, первое «Разрешить: Y» может быть в возрасте от 12 до 30 лет, но вторая запись может быть добавлена ​​в «Запретить» в возрасте от 25 до 28 лет, чтобы пользователь мог соответствовать обоим критериям для ввода.

Есть кто-нибудь на этом?

Ответы [ 2 ]

1 голос
/ 14 ноября 2009

Большое спасибо за ответ! Однако прошлой ночью или ночью, прежде чем я нашел эту статью: http://msdn.microsoft.com/en-us/library/aa964135%28SQL.90%29.aspx

Это решило наши проблемы. Теперь 1 запрос в хранимой процедуре может точно сказать, какие элементы имеют право.

-Josh

0 голосов
/ 13 ноября 2009

Да, вы можете хранить правила в своей базе данных, используя любой тип DSL , который имеет для вас смысл, но SQL не является решением для интерпретации или обеспечения соблюдения правил.

Намного проще будет вставить поле правил в ваше приложение и интерпретировать его там. У вас будет доступ к многофункциональным библиотекам синтаксического анализатора для интерпретации правила и более простым способам написания ОО-кода для его применения.

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

Другой способ думать об этом: база данных хранит данные, а не код . Вы можете выдумать это, сохранив определение правил как строки в базе данных, но позвольте базе данных обрабатывать их как дословные строки, а не пытайтесь интегрировать их как код, который может выполнять СУБД.

...