如何为用户设置架构以授权访问某些信息?

时间:2011-09-21 02:29:39

标签: php mysql database-design normalization

我有一个社交应用,其user_profile表包含典型的标准字段,例如

user_id (unique)
name

我希望允许用户自己分享保存在名为info的单独表格中的信息,该表格包含以下字段:

user_id_fk
agent_name
agent_phone
agent_address

所以我的想法是,如果我是用户#1并且您是用户#6 - 我可以授权您在我的info表中查看数据。然后,当您查看我的个人资料时,PHP函数会检查您是否已获得授权,并显示一个链接到包含我的信息的页面的按钮。

我的问题是:实施此方法的最佳方式是什么?

我想到了一些解决方案但想要你的意见:

[1]在名为user_profile的{​​{1}}中创建新字段,其中包含逗号分隔的字符串,其中包含授权访问的所有用户。明显的缺点是这些字符串的限制(例如,如果撤销对信息的访问,未标准化等,则很难删除user_id)

info_access

[2]创建一个名为3,23,14,12,11 新表格,如下所示:

info_access

在这种情况下,我会查询为

user_id_fk can_access 6 3 6 23 6 14 6 12 6 11

但我不确定如何编写PHP函数来检查我是否会在访问授权我查看信息的人的个人资料时看到该按钮。

有关架构/代码的任何建议吗?

1 个答案:

答案 0 :(得分:1)

第二种方法是解决问题的最佳方法。然后,您可以查询info_access表,以检查info_access表中是否存在查看配置文件的用户ID和查看者的用户ID的记录。