我希望为具有多级用户权限的用户创建一个数据库,但我不知道如何去做。我的意思是,我希望企业的经理能够购买我的产品;这个人将被授予所有者权限,但也可以根据该许可证授予额外的用户--这些人将被授予经理或用户权限。每个级别(以及我的级别: Admin和我的员工: SuperUser)显然都有各自的权限/特权)。
更具体地说,我问的是如何设置数据库。例如,如果我的企业是公司日历/组织者,则所有者将设置部门,每个部门都有一名经理和许多用户。构建数据库的最好和最有效的方法是什么?例如,每个用户(和每个日历条目)是否必须与属于该特定所有者帐户的ID相关联?我只是有点迷失了什么是最好的方式来组织数据库,以保持一切在一起,因为我将有多个不同的所有者与他们自己的公司结构下。
我想使用MySQL和PHP。
我试图让这一切变得尽可能合乎逻辑。我想我把它弄得太难了,但我确信有一个标准可以让它提前easier....Thanks。
发布于 2015-12-23 01:23:19
我不太明白你到底在找什么。从我收集的信息来看,您似乎需要一个包含权限、用户和部门的数据库。在这个非常基本的示例中,我创建了3个表。(假设一个用户只能属于一个部门)
您可以在users表中设置一个外键,该外键链接到permissions表中的主键。departments表将包含user_id的外键。
您可以基于每个权限可以对您的查询和应用程序端逻辑执行的操作来创建所有逻辑。
(我无法嵌入图像,因为没有足够的代表)
发布于 2015-12-23 01:33:04
至少每个产品/对象在其表中都需要一个foreign_key,例如用户的id。这是必要的,并且从产品/对象设置与用户的关系。
然后这取决于你希望你的系统变得多复杂。一种简单的方法是仅使用用户表中的布尔列,如admin、editor列等,值仅为true
和false
。在你的代码中,你可以使用if
和case
来检查用户是否是管理员,并向他展示你的应用程序的一部分。例如,像删除链接。但是您也可以将更新和删除限制到其用户在true
列中具有true
值的用户。
更复杂的路由将包括表中的其他id字段,这些字段设置某物与另一物的关系。例如,您希望用户是卖家或买家,然后将seller_id和buyer_id列添加到products表中,并检查ids是否与user_id一致。但不是“那个”user_id,而是您在用户创建产品列表时保存的另一个user_id。这样你就可以保证,除了你的员工,创建这个东西的用户也有权编辑它,因为当他登录到你的系统时,产品的user_id与他的user_id (当前用户)是相同的。
您可以做更复杂的关系,但是您必须创建另一个表,并在其中保存其他ids,这些ids将某些用户与其他用户相关联。在这个表中,假设您保存了一个maintainer_id和一个maintained_id,这两个值都具有特定的user_ids值,但是通过这种方式,您可以在一个用户可以更改的对象之间建立一个关系,尽管它们属于其他用户。或者,如果你谈论的是客户,那么mainter_id将被允许向那些使用maintained_id的人写消息,比如如果有人是卖家,其他人是潜在买家。
https://stackoverflow.com/questions/34427004
复制相似问题