Nå, dette er et af de områder, der stadig fremkalder en ret stor diskussion. Som nogle siger [hvem? - tror det var Atwood blandt andre mennesker, men et link undslipper mig], en applikation, der kan alt, er allerede lavet; det hedder C. Det, du vil gøre, grænser næsten op til det 'for generaliserede' område, selvom jeg kan se værdien i, at du ikke behøver en programmør, hver gang en forretningsregel ændres.
Hvis jeg skulle implementere sådan et system, ville jeg vel prøve at opdele det i domæner. Du har allerede gjort et relativt godt stykke arbejde med det andet bord. Bare normaliser det til separate domæner, der bruges til at sammensætte forretningsregler. Du opretter en forretningsregel, som består af 1 eller flere begrænsninger ELLER-ed sammen. Hver begrænsning har brug for en egenskab, der er begrænset med en operatør mod et vilkår. Begreber kan være vanskelige, da de kan være alt fra en egenskab til en funktion til en sammensat funktion. Det er nok nemmest at tjekke dine forretningsregler for at se, hvad du har brug for. Start med f.eks. egenskaber, booleans og almindelige ting som 'NU'.
Så selve skemaet ville for eksempel bestå af rules
, som indeholder flere constraints
(den åbenlyse fordel er, at du kan knytte disse til enhver [brugergruppe/tilbud/tidsrum/andet domæne], du ønsker). Disse består til gengæld af properties
, som ville sammenlignes med en af operators
(referencetabel for det meste, så du kan indtaste brugerdefinerede beskrivende navne for ikke-programmører, men du kan vælge at indtaste en brugerdefineret funktion i den på et tidspunkt) og selvfølgelig en af terms
. Den sidste del er den mest komplekse, så du skal nok kvalificere den med et ID i term_types
så du ved, om du sammenligner med en anden ejendom eller en funktion. Du kan også bare VARCHAR
det og opret feltet med PHP, hvilket ikke burde være for svært, givet hvordan du har alle mulighederne i properties
og/eller functions
.
Det er et meget åbent system (og der er sikkert bedre måder at gøre det på), så det er nok ikke værd at gøre, medmindre du ved, at du har brug for en høj grad af dynamik i forretningsregler.