我对如何设置我的桌子有点困惑。我有三个可通过复选框选择的角色。注册时....如果用户选择一和二...那么这些页面应该是可见的,如果他选择了一个和三个,那么这些页面,如果选择了他们中的任何一个,那么只有那些...
让我们将页面1命名为客户端管理页面2发票管理页面3查看报告
我应该为这三个或一个单独的字段。
谢谢
发布于 2009-08-11 09:23:00
为每个角色保留单独的字段不是一个好主意。如果您想要添加另一个角色,则需要更新数据库结构。
你可以做两件事:
设置字段
创建一个set字段,您可以在其中仅在一个值中定义用户拥有的任何角色,如果您想要添加新角色,则仍需要对表执行ALTERing操作,但至少不会向表中添加其他字段
M:M表
创建用于连接角色和用户的M:M (多对多)表,如果您想要添加另一个角色,此解决方案不需要更改数据库
CREATE TABLE `users` (
    id INT AUTO INCREMENT,
    login VARCHAR(100) NOT NULL,
    password CHAR(32) NOT NULL,
    PRIMARY KEY (id)
)
CREATE TABLE `roles` (
    id INT AUTO INCREMENT,
    name VARCHAR(50) NOT NULL,
    PRIMARY KEY (id)
)
CREATE TABLE `user_roles` (
    user_id INT,
    role_id INT
)我还将向user roles表添加约束,以确保该表中存在正确的it,但为了简单起见,我不会在该示例中添加它们。有关here的更多详细信息,请参阅
https://stackoverflow.com/questions/1259216
复制相似问题