Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak skodyfikować i przechowywać dynamiczne ograniczenia uprawnień?

Cóż, jest to jeden z obszarów, który wciąż wywołuje dość dużą dyskusję. Jak niektórzy mówią [kto? - myślę, że to było Atwood między innymi, ale link mi umyka], aplikacja, która może zrobić wszystko, została już stworzona; nazywa się C. To, co chcesz zrobić, graniczy z obszarem „zbyt uogólnionym”, chociaż widzę wartość w tym, że nie potrzebujesz programisty za każdym razem, gdy zmienia się reguła biznesowa.

Gdybym miał zaimplementować taki system, to chyba spróbowałbym rozbić go na domeny. Już przy drugim stole wykonałeś stosunkowo dobrą robotę. Po prostu znormalizuj to do oddzielnych domen, które są używane do łączenia reguł biznesowych. Tworzysz regułę biznesową, która składa się z jednego lub wielu ograniczeń połączonych ORAZ. Każde ograniczenie wymaga właściwości, która jest ograniczona operatorem względem terminu. Terminy mogą być trudne, ponieważ mogą być dowolne, od właściwości, przez funkcję, po funkcję złożoną. Prawdopodobnie najłatwiej jest sprawdzić reguły biznesowe, aby zobaczyć, czego potrzebujesz. Zacznij od, powiedzmy, właściwości, wartości logicznych i zwykłych rzeczy, takich jak „TERAZ”.

Na przykład sam schemat składałby się z rules , które zawierają wiele constraints (oczywistą korzyścią jest to, że możesz je powiązać z dowolną [grupą użytkowników/ofertą/przedziałem czasowym/inną domeną]). Te z kolei składają się z properties , co byłoby porównywalne z jednym z operators (tabela referencyjna głównie po to, aby można było wprowadzić niestandardowe nazwy opisowe dla nie-programistów, ale w pewnym momencie możesz wprowadzić w niej niestandardowe funkcje) i, oczywiście, jeden z terms . Ostatnia część jest najbardziej złożona, więc prawdopodobnie będziesz musiał zakwalifikować ją za pomocą identyfikatora w term_types więc wiedziałbyś, czy porównujesz z inną właściwością lub funkcją. Możesz także po prostu VARCHAR i utwórz pole za pomocą PHP, co nie powinno być zbyt trudne, biorąc pod uwagę, jak masz wszystkie opcje w properties i/lub functions .

Jest to bardzo otwarty system (i prawdopodobnie istnieją lepsze sposoby na to), więc prawdopodobnie nie warto tego robić, chyba że wiesz, że potrzebujesz wysokiego stopnia dynamiki w regułach biznesowych.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wstawić tablicę wartości do różnych kolumn tabeli mysql?

  2. Różnica w wymaganym czasie na wstawienie rekordów InnoDB/MyISAM

  3. MySQL:zapytania dotyczące jednostek Unicode

  4. Mój obraz w mojej bazie danych nie jest publikowany na mojej stronie (PHP MySQL)

  5. Jak wykonać zapytanie do tej tabeli MySQL w najbardziej wydajny sposób?