Е, това е една от областите, които все още предизвикват доста голяма дискусия. Както казват някои [кой? - мисля, че беше Atwood сред други хора, но ми убягва връзка], вече е направено приложение, което може да прави всичко; нарича се C. Това, което искате да направите, граничи почти с „твърде обобщената“ област, въпреки че виждам стойността в това да не се нуждаете от програмист всеки път, когато се промени бизнес правило.
Ако трябваше да внедря такава система, предполагам, че ще се опитам да я разбия на домейни. Вече сте свършили сравнително добра работа с втората маса. Просто нормализирайте това в отделни домейни, които се използват за комбиниране на бизнес правила. Вие създавате бизнес правило, което се състои от 1 или много ограничения ИЛИ-издадени заедно. Всяко ограничение се нуждае от свойство, което е ограничено с оператор спрямо термин. Термините могат да бъдат трудни, тъй като могат да бъдат всичко - от свойство до функция, до съставна функция. Вероятно е най-лесно да проверите вашите бизнес правила, за да видите от какво имате нужда. Започнете, да речем, със свойства, булеви стойности и обикновени неща като „СЕГА“.
Така че самата схема, например, ще се състои от rules
, които съдържат множество constraints
(очевидната полза е, че можете да ги обвържете с всяка [потребителска група/оферта/времеви интервал/друг домейн], която искате). Те от своя страна се състоят от properties
, което би се сравнявало с един от operators
(референтна таблица най-вече, за да можете да въвеждате персонализирани описателни имена за непрограмисти, но може да изберете да въведете персонализирани функции в нея в даден момент) и, разбира се, един от terms
. Последната част е най-сложната, така че вероятно ще трябва да я квалифицирате с идентификатор в term_types
така че ще знаете дали сравнявате с друго свойство или функция. Можете също така просто VARCHAR
го и създайте полето с PHP, което не би трябвало да е твърде трудно, като се има предвид как имате всички опции в properties
и/или functions
.
Това е много отворена система (и вероятно има по-добри начини за това), така че вероятно не си струва да правите, освен ако не знаете, че ще имате нужда от висока степен на динамизъм в бизнес правилата.