用户之间的人际关系

时间:2012-04-17 21:42:21

标签: mysql database database-design

我参与了一个小型社交网络的开发,用户必须能够建立它们之间的关系,并且还拥有对内容的权限。举个例子:我添加一个用户作为我的朋友,但是这个用户不允许我查看他/她的所有内容,因此我只能访问用户允许的那些内容(权限)。所以我有一个问题,需要帮助设计这部分的DER。我想有这个表:

- users (id, name)
- relations_type (id, name, active)
- users_relations (id, id_user_1, id_user_2)
- users_permissions (id, id_relation, id_module, id_user, view, edit, delete)

这导致以下结果:

  • 每个关系两行:用户1&gt; <用户2和用户2>用户1,因为当我搜索(SELECT)时,我需要知道哪些是用户1的朋友,哪些是User2的朋友。如果我只留下单向关系,那么我需要一个UNION,这个迁移会减慢我的数据库

这是对的吗? CRUD就此如何处理这个问题?我正在使用MySQL和MyISAM表。

1 个答案:

答案 0 :(得分:0)

不要将user1和user2用作表名,您将忘记范围扩展时的哪个。 你可以对users表的权限进行非规范化,你不需要为几个布尔位分割表。 从不指望工会,它会在最不期望的情况下背叛你。