我使用django框架和mysql作为数据库。我们正在尝试建立一个像平台这样的社交网络,我们的应用程序有一个关注者/跟随系统,我们在选择正确的数据库模式时面临一些困难,我们想到使用以下两个数据库概念之一,
首先为用户创建一个表,为关系创建一个表。关系表看起来像:
id | follower | following
1 | 23 | 20
2 | 58 | 20
3 | 84 | 20
4 | 20 | 11
这样添加新关系只是一个插入,删除关系就是删除。汇总计数以确定给定用户拥有多少粉丝也更容易。但它有一个问题,即行数将呈指数增长。即对于跟随其他100个用户的100个用户可能需要10000行。
为避免这种情况,我们可以使用下表结构(第二个)
id | user_id | followers | following
1 | 20 | 23,58,84 | 11,156,27
2 | 21 | 72,35,14 | 6,98,44,12
... | ... | ... | ...
这里我们以user_id分隔我的昏迷的字符串格式存储用户的关注者/关注者。为了找到用户的关注者/关注者,我们需要获取字符串并提取信息。为了删除,插入和获取用户的关注者,我们需要处理数据库中存在的字符串。但是这种方法将为n个用户采用n行。
现在的问题是哪种架构设计适合使用??
通过处理数据库中存在的字符串或使用第一个设计可以使用第二个模式设计是否可以?