隐私问题 - 数据库

时间:2011-06-19 18:56:13

标签: mysql database database-design

如果我有这张桌子:

users
-----
id_users (pk)
age
name
gender
salary

每个值都需要在用户配置文件中设置可见或不可用的选项。 您认为这是最好的方法吗?

例如,将字段工资隐藏到人x,但允许人y。 基本上有些人可以看一些属性。

感谢

2 个答案:

答案 0 :(得分:3)

如果默认隐私将显示给所有人,则您可以创建一个表格以将特定用户的所有隐藏设置保存到特定用户。

这是我建议的表格,其中三列的复合PK

hide_details
------------
visitor_id
user_id
what

一些样本数据将是:

visitor_id      |       user_id     |       what
    1                       2               age
    1                       2               name
    3                       4               salary

如果您向用户的表中添加其他列,则以后不必更新此表架构。建议,如果你想让这个速度惊人地快,你可以将列名映射到整数,并在你的应用程序逻辑中使用它来进行比较。例如。 name = 1,age = 2等...所以,当您进行比较以隐藏名称时,您只需检查隐藏数组中是否存在具有该整数的记录。

您可以像下面这样使用它:在显示配置文件之前,您将该访问者的所有隐藏记录提取到该配置文件,并将它们放入一个数组中,然后显示任何尚未隐藏的内容。 / p>

E.g。

$hide = array('name', 'age', 'salary');

然后,你可以检查:

echo (in_array($hide)) ? '' : '<div>Name:'.$name.'</div>';

答案 1 :(得分:0)

您需要拥有查看数据的人员的权限表。它可以包含id_person,may_view_age,may_view_salary等字段

如果访问者应该只能看到某些人的某些信息,那么您还需要在users表中包含一个字段,例如department_id

如果我们对您的申请一无所知,很难提出更具体的内容。