0

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

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

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

  1. 用户位置 ID
  2. 用户身份
  3. Allow_friends(以逗号分隔的 ID)
  4. Deny_friends(以逗号分隔的 ID)
  5. Allow_groups(以逗号分隔的 ID)
  6. Deny_groups(以逗号分隔的 ID)
  7. Allow_search(州章、市)
  8. 朋友(对某些人可见,对某些人隐藏)(如果为 0,则我从 allow_friends 获取朋友 ID,否则为 Deny_friends)
  9. 组(对某些人可见,对某些人隐藏)(如果为 0,则我正在从 allow_groups 获取朋友 ID,否则为 Deny_groups)
  10. Privacy_for_type
  11. Privacy_for_name

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

4

2 回答 2

1

如果你要设计数据库表,你可能想阅读规范化: http ://en.wikipedia.org/wiki/Database_normalization

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

于 2013-02-09T09:58:34.470 回答
0

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

用户/组表可以包含用户/组的特定(和隔离)信息(因此用户的 # 1 和 2),然后您可以为“类型”或“类别”添加一个字段,说明它是否是用户或组。如果您为用户和组存储的信息足够不同,您可以为每个单独的表。

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

  • permid : 任意唯一主键 auto_increm 列
  • asset_cat:资产所属的类别(或表名)
  • asset_id : 权限描述的用户标识、组标识等
  • uid : 正在寻求许可的用户
  • 许可: 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'

这些只是帮助您入门的一些示例。让我知道这是否有帮助,或者如果您需要我澄清任何事情:)

于 2013-02-09T10:04:14.803 回答