user_table
id, etc
permission table
id, user_id, permission_type
met deze structuur kan elke gebruiker verschillende machtigingstypen hebben die aan zijn account zijn gekoppeld, één voor elke set functies die ze kunnen toegang hebben tot. je zou nooit de tabelstructuur hoeven te veranderen om nieuwe soorten rechten toe te voegen.
om nog een stap verder te gaan, zou u van elk type toestemming een binair getal kunnen maken. op deze manier zou je een set permissies kunnen laten vertegenwoordigen door één geheel getal door bitsgewijze operatoren te gebruiken.
bijvoorbeeld als je de constanten had
PERMISSION_CHANGE_PERMISSIONS = bindec('001') = 1
PERMISSION_MAKE_CHANGES = bindec('010') = 2
PERMISSION_ACCEPT_CHANGES = bindec('100') = 4
je zou deze waarden kunnen combineren tot één geheel getal met behulp van een bitsgewijze operator "|"
(PERMISSION_CHANGE_PERMISSIONS | PERMISSION_MAKE_CHANGES) = bindec('011') = 3 = $users_combined_permissions
gebruik vervolgens de bitsgewijze operator "&"
. om te controleren of ze een specifieke toestemming hebben($users_combined_permissions & PERMISSION_MAKE_CHANGES) = true
als je dat deed, zou je maar één db-record nodig hebben voor elke set machtigingen.