roles、users、およびusers_rolesテーブルが作成されます。
rolesテーブルには、ユーザーが持つことができるさまざまなロールが保持されます。サンプル データでは、管理者ロールと寄付者ロールを宣言しました。
roles
    id             unsigned int(P)
    description    varchar(15)
+----+---------------+
| id | description   |
+----+---------------+
|  1 | Administrator |
|  2 | Donator       |
| .. | ............. |
+----+---------------+
そしてもちろん、ユーザーに関する情報を保存する必要があります。
users
    id          unsigned int(P)
    username    varchar(32)
    password    varbinary(255)
    etc.
+----+----------+----------+-----+
| id | username | password | ... |
+----+----------+----------+-----+
|  1 | bob      | ******** | ... |
|  2 | mary     | ******** | ... |
| .. | ........ | ........ | ... |
+----+----------+----------+-----+
最後に、テーブルで 2 つを結合しusers_rolesます。bob私のサンプル データでは、それが寄付者でありmary、管理者と寄付者の両方であることがわかります。user_idとrole_idはどちらもそれぞれのテーブルへの外部キーであり、一緒になってこのテーブルの主キーを形成します。
users_roles
    user_id    unsigned int(F user.id)\_(P)
    role_id    unsigned int(F role.id)/
+----+---------+---------+
| id | user_id | role_id |
+----+---------+---------+
|  1 |       1 |       2 |
|  2 |       2 |       1 |
|  3 |       2 |       2 |
| .. | ....... | ....... |
+----+---------+---------+
このようにして、ユーザーは無制限の数の役割を持つことができます。