CREATE TABLE groups (
group_id int(10) NOT NULL auto_increment,
group_name varchar(30) NOT NULL default '',
PRIMARY KEY (group_id),
UNIQUE KEY group_name (group_name)
) TYPE=MyISAM;
INSERT INTO groups VALUES (1, 'PROFILE'),
(2, 'POSTING');
CREATE TABLE rights (
right_id int(10) NOT NULL auto_increment,
group_id int(10) NOT NULL default '0',
right_name varchar(30) NOT NULL default '',
PRIMARY KEY (right_id),
UNIQUE KEY right_name (right_name),
KEY group_id (group_id)
) TYPE=MyISAM;
INSERT INTO rights VALUES (1, 1, 'CHANGE_NICKNAME'),
(2, 1, 'CHANGE_MAIL'),
(3, 1, 'CHANGE_PASS'),
(4, 2, 'CREATE'),
(5, 2, 'EDIT'),
(6, 2, 'DELETE'),
(7, 2, 'CLOSE');
CREATE TABLE user_rights (
user_id int(10) NOT NULL default '0',
right_id int(10) NOT NULL default '0',
PRIMARY KEY (user_id,right_id),
KEY user_id (user_id)
) TYPE=MyISAM;
INSERT INTO user_rights VALUES (1, 1),
(1, 2),
(1, 3),
(1, 4),
(1, 5),
(1, 6),
(1, 7),
(2, 2),
(2, 3),
(2, 4),
(2, 5);
This means that the user with id #1 has all of the 7 permissions defined wheres the user with id #2 is not allowed to change his nickname, close or delete postings