如何在MYSQL中创建用户隐私表

时间:2013-02-09 09:12:54

标签: php mysql sql

我正在建立一个社交网站,我想知道如何创建群组,活动和朋友列表。我想为他的朋友提供用户隐私,如下所示:

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

我设计了一个表格结构,我在下面粘贴它:

  1. User_location_id
  2. USER_ID
  3. Allow_friends(以逗号分隔的ID)
  4. Deny_friends(以逗号分隔的ID)
  5. Allow_groups(以逗号分隔的ID)
  6. Deny_groups(以逗号分隔的ID)
  7. Allow_search(州,市章)
  8. 朋友(对一些人可见,从某些人隐藏)(如果为0,那么我在来自allow_friends else Deny_friends的朋友ids)
  9. 群组(对某些人可见,从某些人隐藏)(如果为0,那么我会在allow_groups或其他Deny_groups中与朋友ID进行竞争)
  10. Privacy_for_type
  11. Privacy_for_name
  12. 是否存在任何其他有效的结构,可以最大限度地减少数据库命中,并且不会使数据库密集。

2 个答案:

答案 0 :(得分:1)

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

以逗号分隔的存储ID使得更新这些记录和防止重复变得困难。我建议将allow和deny列拆分为单独的相关表。这不会使数据库更加密集,因为您仍然只需要一个查询,这只是意味着您可能必须使用连接进行查询。

答案 1 :(得分:0)

我建议使用两个(或三个)表,分隔用户+组和权限
用户/组表可以包含特定(和隔离)给用户/组的信息(对于用户来说是#1和2),然后您可以为“类型”或“类别”添加一个字段,表明它是否是用户或组。如果您为用户和组存储的信息不同,则可以为每个信息分别设置表。

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

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


一些示例条目:

//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'

这些只是帮助您入门的一些示例。如果这有用,或者如果您需要我澄清任何事情,请告诉我。)