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