user_table
id, etc
permission table
id, user_id, permission_type
s touto strukturou by každý uživatel mohl mít ke svému účtu přiřazeno několik typů oprávnění, jedno pro každou sadu funkcí, které mohou mít přístup k. nikdy byste nemuseli měnit strukturu tabulky, abyste mohli přidat nové typy oprávnění.
Chcete-li to udělat ještě o krok dále, můžete každý typ oprávnění vytvořit jako binární číslo. tímto způsobem můžete vytvořit sadu oprávnění reprezentovanou jedním celým číslem pomocí bitových operátorů.
například pokud jste měli konstanty
PERMISSION_CHANGE_PERMISSIONS = bindec('001') = 1
PERMISSION_MAKE_CHANGES = bindec('010') = 2
PERMISSION_ACCEPT_CHANGES = bindec('100') = 4
tyto hodnoty můžete spojit do jednoho celého čísla pomocí bitového operátoru "|"
(PERMISSION_CHANGE_PERMISSIONS | PERMISSION_MAKE_CHANGES) = bindec('011') = 3 = $users_combined_permissions
pak pro kontrolu, zda mají konkrétní oprávnění, použijte bitový operátor "&"
($users_combined_permissions & PERMISSION_MAKE_CHANGES) = true
pokud byste to udělali, potřebovali byste pouze jeden záznam db pro každou sadu oprávnění.