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

Php 多级用户权限的数据库设置,php,mysql,database-design,Php,Mysql,Database Design,我希望为具有多级用户权限的用户创建一个数据库,但我不知道如何进行此操作。我的意思是,我希望一个企业的经理能够购买我的产品;该人员将被授予所有者权限,但也可以根据该许可证向其他用户授予管理者或用户权限。每个级别(以及我的级别:Admin和我的员工:SuperUser)显然都有各自的权限/特权) 更具体地说,我要问的是如何建立数据库。例如,如果我的公司是一个公司日历/组织者,则所有者将设置部门,每个部门都有一名经理和许多用户。构建数据库的最佳和最有效的方法是什么?例如,每个用户(和每个日历条目)是否

我希望为具有多级用户权限的用户创建一个数据库,但我不知道如何进行此操作。我的意思是,我希望一个企业的经理能够购买我的产品;该人员将被授予所有者权限,但也可以根据该许可证向其他用户授予管理者或用户权限。每个级别(以及我的级别:Admin和我的员工:SuperUser)显然都有各自的权限/特权)

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

我想使用MySQL和PHP


我试着使这尽可能合乎逻辑。我想我把它弄得太难了,但我相信有一个标准可以让它变得更容易……提前谢谢。

我很难准确地理解您要找的是什么。从我收集的信息来看,似乎您需要一个包含权限、用户和部门的数据库。在这个非常基本的示例中,我创建了3个表。(假设一个用户只能属于一个部门)

您可以在users表中设置一个外键,该外键链接到permissions表中的主键。departments表将具有用户id的外键

您可以将所有逻辑建立在每个权限对您的查询和应用程序端逻辑所能做的事情之上

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


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

这取决于你希望你的系统变得多复杂。一种简单的方法是只使用用户表中的布尔列,如admin、editor列等,仅使用
true
false
作为值。在代码中,您可以使用
if
case
检查用户是否是管理员,并向他显示应用程序的部分内容。比如删除链接。但您也可以将更新和删除限制为用户在“足够”列中具有
true
值的人

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


您可以创建更复杂的关系,但随后必须创建另一个表,并在其中保存与某些用户(比如其他用户)相关的其他ID。在这个表中,您保存了一个维护者id和一个维护者id,它们都有特定用户id的值,但通过这种方式,您可以在一个用户可以更改的对象之间建立关系,尽管它们属于其他用户。或者,如果您谈论的是客户,那么mainter\u id将被允许向那些拥有维护id的人发送消息,比如某人是卖家,其他人是潜在买家。

我认为您描述的是一个经典。@JaredFarrish不,外键对应于另一个主键。在products表中,用户id字段将与用户表的主键相对应。如果表中没有外键,则不存在关系。