我参与了一个小型社交网络的开发,用户必须能够在其中建立他们之间的关系并且还拥有对内容的权限。例如:我将一个用户添加为我的朋友,但该用户不允许我查看他/他的所有内容,因此我只能访问用户允许我的那些内容(权限)。所以我有一个问题,需要帮助设计这部分的 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 表。