我有这样的数据库设置(我知道它不是最好的设置但是 它无法改变它: - (
基本上有3个级别的用户 - 管理员 - 经理 - 工作人员
几点说明: - 每个员工都属于部门 - 如果Staffs logon_code出现在经理表中,则它们是 经理,否则他们是员工 - 如果人员logon_code出现在管理器表和SystemAdmin中 设置为1,它们是Admin
我该如何为此设置ACL / Auth?有什么想法吗?
CREATE TABLE tblStaff
(
StaffID
int(11)NOT NULL auto_increment,
dept_id
varchar(5)默认为NULL,
logon_code
char(10)NOT NULL,
forename
char(50)NOT NULL,
surname
char(50)NOT NULL,
PRIMARY KEY(StaffID
),
);
CREATE TABLE tblManager
(
ManagerID
varchar(15)NOT NULL,
logon_code
varchar(15)NOT NULL,
dept_id
varchar(5)NOT NULL,
SystemAdmin
tinyint(1)无符号默认NULL,
主要关键(ManagerID
)
);
CREATE TABLE tblDepartment
(
dept_id
varchar(5)NOT NULL,
sect_id
varchar(50)默认为NULL,
subsect_id
varchar(50)默认为NULL,
sect_name
varchar(50)默认为NULL,
sect_abbr
varchar(50)默认为NULL,
subsect_name
varchar(50)默认为NULL,
主要关键(dept_id
)
);
答案 0 :(得分:1)
老实说,我不明白为什么tblStaff和tblManager应该在你的例子中分开。他们不是所有的“雇员”,即某种方式的“员工”吗?
为什么不:
创建表tblUsers(UserID,logon_code,dept_id,SystemAdmin,firstname,lastname等)
毕竟,无论他们是“员工”还是“经理”,他们都将成为您申请的“用户”。
此外,如果您需要更多分离,可以添加另一个字段(例如user_level_id),以确定每个用户的角色。之后,Auth / ACL应该相当简单。