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

Внедряване на разрешения въз основа на репутацията

user_table
id, etc

permission table
id, user_id, permission_type

с тази структура всеки потребител може да има няколко типа разрешения, свързани с неговия акаунт, по едно за всеки набор от функции, които може има достъп до. никога няма да е необходимо да променяте структурата на таблицата, за да добавите нови типове разрешения.

за да направите това още една стъпка, можете да направите всеки тип разрешение двоично число. по този начин можете да направите набор от разрешения да бъде представен с едно цяло число, като използвате побитови оператори.

например ако сте имали константи

PERMISSION_CHANGE_PERMISSIONS = bindec('001') = 1
PERMISSION_MAKE_CHANGES = bindec('010') = 2
PERMISSION_ACCEPT_CHANGES = bindec('100') = 4

можете да комбинирате тези стойности в едно цяло число, като използвате побитов оператор "|"

(PERMISSION_CHANGE_PERMISSIONS | PERMISSION_MAKE_CHANGES) = bindec('011') = 3 = $users_combined_permissions

след това, за да проверите дали имат конкретно разрешение, използвайте побитовия оператор "&"

($users_combined_permissions & PERMISSION_MAKE_CHANGES) = true

ако го направите, ще ви трябва само един db запис за всеки набор от разрешения.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Присъединете две MySQL таблици с PHP

  2. Някой намери ли ефикасен начин за съхраняване на стойности на BSON ObjectId в SQL база данни?

  3. Методът не е намерен в клас

  4. Как да вмъкна/създам съхранени процедури в mySQL от PHP?

  5. Как да промените размера на max_allowed_packet