Hi
I’m not sure what is the correct terminology to use…I’d like to know what is the best way to arrange a table like this:
+----+----------------+-------------+--------------------------------------+
| id | user_privilege | name | description |
+----+----------------+-------------+--------------------------------------+
| 1 | -3 | Blacklisted | Read only user |
| 2 | -2 | Flagged | Under review |
| | | | Privileges unaffected |
| 3 | -1 | Newbie | General user |
| | | | Monitored transactions |
| | | | Restricted activity |
| 4 | 0 | Verified | General user |
| | | | Unrestricted transactions |
| 5 | 1 | Assistant | View user privileges |
| | | | View user activity |
| | | | Customer support |
| 6 | 2 | Moderator | View user privileges |
| | | | View user activity |
| | | | Customer support |
| | | | Change user privileges below current |
| | | | Reverse Payments |
| | | | View user identification |
| 7 | 3 | Admin | View user privileges |
| | | | View user activity |
| | | | Customer support |
| | | | Change all user privileges |
| | | | Reverse Payments |
| | | | View user identification |
| | | | Admin discretion |
+----+----------------+-------------+--------------------------------------+
So far my table structure looks like this:
drop table if exists user_privileges;
create table user_privileges (
id int(7) auto_increment primary key not null,
user_privileges tinyint(2) default -1 not null,
name varchar(256) not null,
description varchar(256) not null
);
insert into user_privileges values
(null, -3, 'Blacklisted', 'Read Only User'),
(null, -2, 'Flagged', 'Under Review'),
(null, -2, 'Flagged', 'Privileges Unaffected'),
(null, -1, 'Newbie', 'General User'),
(null, -1, 'Newbie', 'Monitored Transactions'),
(null, -1, 'Newbie', 'Restricted Activity'),
(null, 0, 'Verified', 'General User'),
(null, 0, 'Verified', 'Unrestricted Transactions'),
(null, 1, 'Assistant', 'View User Privileges'),
(null, 1, 'Assistant', 'View User Activity'),
(null, 1, 'Assistant', 'Customer Support'),
(null, 2, 'Moderator', 'View user privileges'),
(null, 2, 'Moderator', 'View user activity'),
(null, 2, 'Moderator', 'Customer support'),
(null, 2, 'Moderator', 'Change User Privileges Below Current'),
(null, 2, 'Moderator', 'Reverse Payments'),
(null, 2, 'Moderator', 'View User Identification'),
(null, 3, 'Admin', 'View user privileges'),
(null, 3, 'Admin', 'View user activity'),
(null, 3, 'Admin', 'Customer support'),
(null, 3, 'Admin', 'Change All User Privileges'),
(null, 3, 'Admin', 'Reverse Payments'),
(null, 3, 'Admin', 'View User Identification'),
(null, 3, 'Admin', 'Admin discretion')
;
I’ve no idea whether I should keep the structure this way or if there’s a term or special method for this type of table structure.
Can anyone point me in the right direction? (Using MySQL btw)