1

我参与了一个小型社交网络的开发,用户必须能够在其中建立他们之间的关系并且还拥有对内容的权限。例如:我将一个用户添加为我的朋友,但该用户不允许我查看他/他的所有内容,因此我只能访问用户允许我的那些内容(权限)。所以我有一个问题,需要帮助设计这部分的 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 > 用户 2 和用户 2 > 用户 1,因为当我搜索 (SELECT) 时,我需要知道哪些是用户 1 的朋友,哪些是用户 2 的朋友。如果我只留下单向关系,那么我需要一个 UNION,这可能会减慢我的数据库

那是对的吗?当 CRUD 对此进行处理时,您的处理方式如何?顺便说一句,我正在使用 MySQL 和 MyISAM 表。

4

1 回答 1

0

不要使用 user1 和 user2 作为表名,当范围扩大时你会忘记哪个是哪个。您可以对 users 表的权限进行非规范化,您不需要将表划分为几个布尔位。永远不要指望工会,它会在最意想不到的情况下背叛你。

于 2012-04-17T21:46:12.470 回答