sql >> Database >  >> RDS >> Mysql

Hoe dynamische toestemmingsbeperkingen te codificeren en op te slaan?

Welnu, dit is een van de gebieden die nog steeds een vrij grote discussie uitlokken. Zoals sommigen zeggen [wie? - denk dat het Atwood was onder andere, maar een link ontgaat me], een applicatie die alles kan is al gemaakt; het heet C. Wat je wilt doen, grenst bijna aan het 'te algemene' gebied, hoewel ik de waarde kan inzien van het niet nodig hebben van een programmeur telkens wanneer een bedrijfsregel verandert.

Als ik zo'n systeem zou moeten implementeren, denk ik dat ik zou proberen het op te delen in domeinen. Je hebt het al relatief goed gedaan met de tweede tafel. Normaliseer dat gewoon in afzonderlijke domeinen die worden gebruikt om bedrijfsregels samen te stellen. U maakt een bedrijfsregel die bestaat uit 1 of meerdere beperkingen, samen OF-ed. Elke beperking heeft een eigenschap nodig die is beperkt met een operator tegen een termijn. Termen kunnen lastig zijn, omdat ze van alles kunnen zijn, van een eigenschap tot een functie, tot een samengestelde functie. Het is waarschijnlijk het gemakkelijkst om uw bedrijfsregels te controleren om te zien wat u nodig heeft. Begin met bijvoorbeeld eigenschappen, booleans en alledaagse dingen zoals 'NU'.

Dus het schema zelf zou bijvoorbeeld bestaan ​​uit de rules , die meerdere constraints . bevatten (het duidelijke voordeel is dat u deze kunt koppelen aan elke [gebruikersgroep/aanbieding/tijdspanne/ander domein] die u maar wilt). Deze bestaan ​​op hun beurt uit properties , wat vergelijkbaar is met een van de operators (meestal referentietabel zodat u aangepaste beschrijvende namen voor niet-programmeurs kunt invoeren, maar u kunt er op een bepaald moment voor kiezen om er aangepaste functies in in te voeren) en natuurlijk een van de terms . Het laatste deel is het meest complexe, dus je zou het waarschijnlijk moeten kwalificeren met een ID in term_types zodat u weet of u vergelijkt met een ander pand of een functie. Je kunt ook gewoon VARCHAR het en maak het veld met PHP, wat niet al te moeilijk zou moeten zijn, gezien hoe je alle opties in properties hebt en/of functions .

Het is een zeer open systeem (en er zijn waarschijnlijk betere manieren om het aan te pakken), dus het is waarschijnlijk niet de moeite waard om te doen, tenzij je weet dat je een hoge mate van dynamiek in bedrijfsregels nodig hebt.




  1. Hoe kan ik de querytijd in Perl, DBI weergeven?

  2. Controleren op een leeg resultaat (PHP, PDO en MySQL)

  3. Is er een stuurprogramma voor mysql op nodejs dat opgeslagen procedures ondersteunt?

  4. Wat is een gratis tool om twee SQL Server-databases te vergelijken?