首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在mysql中为用户角色分配和区域分配设计数据库结构?

如何在mysql中为用户角色分配和区域分配设计数据库结构?
EN

Stack Overflow用户
提问于 2012-10-17 02:15:22
回答 2查看 2.3K关注 0票数 0

最近,我的公司给我分配了一个项目,该项目将管理我公司的营销团队。我遇到了麻烦,或者无法决定数据库结构。

在此项目中具有以下访问角色:

1) CMO (首席营销官)

2) -总经理

3) -区域经理

4) -区域经理/国家负责人

5) -协助经理

6) -区域经理

7)

访问级别将根据上面提到的角色层次结构确定。

例如,CMO拥有完全访问权限,区域经理拥有除CMO之外的所有访问权限,依此类推。

现在,第二个主要内容是Region (Region将在合并多个区域/州之后创建) Zone/State (它将在合并多个城市后创建) Area/City

现在,默认情况下将在任何区域添加所有用户,然后管理员分配角色和区域或州或区域,最后用户可以根据其角色及其分配的区域/州/城市/区域在系统中进行访问

如果任何用户访问角色是区域经理并分配了类似Region1 Now的区域,则用户将能够访问region1中的所有州/区域及其城市

请帮我设计管理所有这些东西的数据库结构?

EN

回答 2

Stack Overflow用户

发布于 2012-10-17 02:24:59

在您的数据库中创建一个标题为“users”的表。在这里,您可以创建多个表或一个表。基本上,您希望在一个或多个表中创建一个角色字段和一个区域字段。当用户登录时,将根据他们的角色(即1是总经理,7是用户)/region授予他们访问权限。

对于您想要做的事情,有许多语言版本的预置解决方案。我会推荐你去找一个。

票数 0
EN

Stack Overflow用户

发布于 2012-10-17 02:45:06

为了表示层次结构,您可以创建包含parent_role_id列的roles表,这意味着其他角色可以“位于”父角色之下。

例如:

代码语言:javascript
复制
CREATE TABLE `roles` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `role` varchar(45) NOT NULL,
  `parent_role_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `parent_role_id` (`parent_role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

如果我想添加一个CMO,他们会将这个字段保留为空,因为没有人在他们上面。然而,区域管理器的父id将为5 (假设CMO为1),因为它们位于辅助管理器之下。这使您能够仅使用一个表构建一个类似于文件夹的结构。

其他用户与位置的关系可以通过多种方式完成。我认为最简单的方法是通过许多多对多的关系,例如:

代码语言:javascript
复制
CREATE TABLE `users` (
  `id` int(11) NOT NULL,
  `username` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `user_roles`(
  `user_id` int(11) NOT NULL,
  `role_id` int(11) NOT NULL,
  PRIMARY KEY (`user_id`,`role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `user_region` (
  `user_id` int(11) NOT NULL,
  `region_id` int(11) NOT NULL,
  PRIMARY KEY (`user_id`,`region_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

如果您正在寻找用于管理授权(也称为权限)的访问控制列表( Access Control List,ACL),那么更具测试性和灵活性的解决方案可能是访问控制列表(ACL),具体取决于您使用的语言。

http://en.wikipedia.org/wiki/Access_control_list

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12920917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档