我必须为学术目的开发一个基本的社交网络;但我需要一些用户管理的提示..
用户被细分为3个具有不同权限的组:管理员,分析师和标准用户。 对于每个用户都应该在数据库中存储以下信息:姓名,姓氏,电子邮件,年龄,密码。
我不太确定如何在两个解决方案之间设计数据库:
1)一个名为'users'的表,其中包含'role'属性,用于解释用户可以做什么和不能做什么,以及通过php管理权限
2)每个应用程序用户都是使用查询“CREATE ROLE”(它是一个postgres数据库)创建的数据库用户,并且他对使用'GRANT'语句授予的某些表具有权限
您应该考虑该项目是用于数据库考试..
感谢
答案 0 :(得分:2)
不要将数据库的授权机制用作应用程序的授权系统。三个主要原因:
A)如果不重建整个应用程序,您将永远无法更改为其他数据库。
B)您希望在应用程序中授予用户的内容类型可能与db的ACL系统允许的内容类型不同。
最重要的是:
C)您不希望应用程序用户能够直接对您的数据库执行任何操作。如初。
所以你的#2选项就出来了。因此,使用每个用户记录存储用户类型字段,然后“该用户类型允许的内容”成为以PHP计算的业务逻辑的一部分。
答案 1 :(得分:0)
解决方案1每次因为您不希望将自己限制为仅基于每个表分配权限。使用数据库用户既麻烦又不太实用。
答案 2 :(得分:0)
使用选项1.从长远来看,它将更加灵活,可能更容易编码,并且您不希望将应用程序逻辑与特定实现紧密联系在一起。如果您以后想要将应用程序移植到SQL-Server上运行该怎么办?如果数据库用户的实现方式不同,则选项2可能会给您带来严重的痛苦。
答案 3 :(得分:0)
使用您的第一个替代方案(使用PHP管理权限)。原因如下: