如何在MYSQL中制作用户隐私表



我在一个社交网站上工作,我有创建群组、活动和朋友列表的想法。我想要他的朋友的用户隐私,如下所示:

1.用户可以选择可以查看其个人信息或不能查看的好友。2.用户可以管理谁可以查看他的活动和组,谁不能

我已经为我粘贴在下面的相同内容设计了一个表格结构:

  1. 用户位置_id
  2. 用户_id
  3. Allow_friends(ID用逗号分隔)
  4. Deny_friends(ID用逗号分隔)
  5. Allow_groups(ID用逗号分隔)
  6. Deny_groups(ID用逗号分隔)
  7. 允许搜索(_S)u2028(州、市章节)
  8. 朋友u2028(对某些人可见,对某些人隐藏)(如果为0,则我正在从allow_friends else Deny_friends获取好友ID)
  9. 组(对某些人可见,对某些人隐藏)(如果为0,则我从allow_Groups-else Deny_Groups获取朋友ID)
  10. Privacy_for_type
  11. Privacy_for_name

是否有任何其他结构将是有效的,可以最大限度地减少数据库命中,并且不会使数据库密集型。

如果要设计数据库表,您可能需要阅读有关规范化的内容:http://en.wikipedia.org/wiki/Database_normalization

存储用逗号分隔的id会使更新这些记录和防止重复变得困难。我建议将允许和拒绝列拆分为单独的相关表。这不会使它对数据库更加密集,因为您仍然只需要一个查询,这只是意味着您可能必须有一个带有联接的查询。

我建议使用两个(或三个)表,分隔用户+组和权限

users/groups表可以包含特定于(和孤立的)用户/组的信息(因此,#是用户的1和2),然后您可以添加一个"类型"或"类别"字段,说明它是用户还是组。如果为用户和组存储的信息足够不同,则可以为每个用户和组分别设置单独的表

权限表可以包含任何权限,包括列表中的#s 4-9(我真的不知道10/11的上下文。)该表还可以用于管理组成员身份。以下是如何构建权限表的示例:

  • permit:任意唯一主键auto_increm列
  • asset_cat:资产所属的类别(或表名)
  • asset_id:权限描述的用户id、组id等
  • uid:正在寻求权限的用户
  • permission:uid为asset_id寻求的权限
  • value:该权限的值


一些示例条目:

//Same as listing 1338 in user 1337's Allow_Friends Field
1002, 'user', '1337', '1338', 'Allow_Friends', 'True'
//Lists 1337 as a member in group # 43
1003, 'group', '43', '1337', 'Member', 'True'

这些只是一些帮助你入门的例子。如果这有帮助,或者你需要我澄清什么,请告诉我:)

相关内容

最新更新