多级用户权限的数据库设置

时间:2015-12-23 01:01:17

标签: php mysql database-design

我希望为具有多级用户权限的用户创建数据库,我不知道如何去做。我的意思是我希望一个企业的经理能够购买我的产品;该人员将获得所有者权利,但也可以根据该许可证授予其他额外用户 - 这些人将获得经理或用户权利。每个级别(以及我的级别:管理员和我的员工:超级用户)显然都有个人权利/特权。

我要问的是,更具体地说,是如何设置数据库。例如,如果我的业务是公司日历/组织者,业主将设置部门,每个部门都有一个经理和许多用户。什么是构建数据库的最佳和最有效的方法?比如,每个用户(以及每个日历条目)是否必须与属于该特定所有者帐户的ID相关联?关于组织数据库以保持所有内容的最佳方式,我只是有点迷失,因为我将拥有多个不同的所有者,并拥有自己的公司结构。

我想使用MySQL和PHP。

我尽量使其符合逻辑。我认为我做得太难了,但我确信有一个标准可以让它更容易......提前谢谢。

2 个答案:

答案 0 :(得分:0)

我很难理解你正在寻找什么。从我收集的内容来看,您似乎想要一个拥有权限,用户和部门的数据库。在这个非常基本的示例中,我创建了3个表。 (假设一个用户只能属于一个部门)

您可以在users表中设置一个外键,该外键链接到权限表中的主键。 departments表将具有user_id的外键。

您可以根据每个权限对查询和应用程序端逻辑执行的操作建立所有逻辑。

(由于没有'足够的代表,我无法嵌入图片)

Places documentation

答案 1 :(得分:0)

至少每个产品/对象在其表中都需要foreign_key,例如用户的id。这是必要的,并设置产品/对象与用户的关系。

然后这取决于您希望系统变得多么复杂。一种简单的方法是在用户表中使用布尔列,例如管理员,编辑器列等,只有truefalse作为值。然后,您可以在代码中使用ifcase来检查用户是否是管理员,并向他显示应用的部分内容。就像删除链接一样。但您也可以限制更新和删除其用户在足够列中具有true值的人。

更复杂的路由将包括表中的其他id字段,这些字段设置某事物与其他事物的关系。比如说您希望用户成为卖家或买家,那么您可以将seller_id和buyer_id列添加到products表中,并检查ID是否与user_id相对应。但不是“the”user_id,而是用户创建产品列表时保存的另一个user_id。这样你就可以保证,除了你的员工之外,创建这个东西的用户也有权编辑它,因为当他登录到你的系统时,产品的user_id与他的user_id(当前用户)相同。

你可以做更复杂的关系,但是你必须创建另一个表并在其中保存其他ID,这些id将某些用户与其他用户联系起来。在这个表中你省了一个维护者来说,维护者有一个用户可以改变的对象,但是这样你可以在一个用户可以改变的对象之间建立一个关系,但是这样你可以在一个用户可以改变的对象之间建立关系。或者,如果您正在谈论客户,那么mainter_id将被允许向具有maintain_id的人发送消息,例如,如果有人是卖家而其他人是潜在买家。