Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да кодифицирате и съхранявате динамични ограничения за разрешения?

Е, това е една от областите, които все още предизвикват доста голяма дискусия. Както казват някои [кой? - мисля, че беше Atwood сред други хора, но ми убягва връзка], вече е направено приложение, което може да прави всичко; нарича се C. Това, което искате да направите, граничи почти с „твърде обобщената“ област, въпреки че виждам стойността в това да не се нуждаете от програмист всеки път, когато се промени бизнес правило.

Ако трябваше да внедря такава система, предполагам, че ще се опитам да я разбия на домейни. Вече сте свършили сравнително добра работа с втората маса. Просто нормализирайте това в отделни домейни, които се използват за комбиниране на бизнес правила. Вие създавате бизнес правило, което се състои от 1 или много ограничения ИЛИ-издадени заедно. Всяко ограничение се нуждае от свойство, което е ограничено с оператор спрямо термин. Термините могат да бъдат трудни, тъй като могат да бъдат всичко - от свойство до функция, до съставна функция. Вероятно е най-лесно да проверите вашите бизнес правила, за да видите от какво имате нужда. Започнете, да речем, със свойства, булеви стойности и обикновени неща като „СЕГА“.

Така че самата схема, например, ще се състои от rules , които съдържат множество constraints (очевидната полза е, че можете да ги обвържете с всяка [потребителска група/оферта/времеви интервал/друг домейн], която искате). Те от своя страна се състоят от properties , което би се сравнявало с един от operators (референтна таблица най-вече, за да можете да въвеждате персонализирани описателни имена за непрограмисти, но може да изберете да въведете персонализирани функции в нея в даден момент) и, разбира се, един от terms . Последната част е най-сложната, така че вероятно ще трябва да я квалифицирате с идентификатор в term_types така че ще знаете дали сравнявате с друго свойство или функция. Можете също така просто VARCHAR го и създайте полето с PHP, което не би трябвало да е твърде трудно, като се има предвид как имате всички опции в properties и/или functions .

Това е много отворена система (и вероятно има по-добри начини за това), така че вероятно не си струва да правите, освен ако не знаете, че ще имате нужда от висока степен на динамизъм в бизнес правилата.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Управление на Liquibase с модел за разработка на GitFlow

  2. PHP.net казва, че md5() и sha1() не са подходящи за парола?

  3. Проверете версията на mySQL на Mac 10.8.5

  4. MySQL LOAD DATA LOCAL INFILE не е разрешен през ODBC

  5. Неизвестен проблем с колоната с псевдоним на mysql