我知道从技术上讲mysql不支持多对多。我们应该创建一个桥接表。但就我而言,我仍然对此感到困惑。
当许多用户可以拥有许多 friend 时,2 个表(或更多)会是什么样子?把它想象成社交网络应用程序。
user
=====
id
name
friend
=====
id
name
我很困惑,不知道如何链接它们,因为在好友表中,ID 也可以是用户的 ID。
最佳答案
最好的做法是制作第三个“映射”表。
user
=====
id
name
m2m_user_friend
=====
user_id
friend_user_id
user_id 和 user_friend_id 都是该用户表的外键。
这允许最有效的查询,例如“给我 id=17 的所有 friend ”,而且,如果 friend 连接是单向的(例如友谊请求),您可以以相反的方式做事情“向我展示以下人正在/想要成为 id=17"的 friend 。
社交网络很可能会使用一种称为图形数据库的东西。关系数据库很棒 - 除非您需要扩展。在某些时候,您可能会使用 MySQL 等传统数据库将数据分散到数万台机器上。
关于mysql - 多对多关系关系数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23031217/