mysql - 多对多关系关系数据库

标签 mysql database

我知道从技术上讲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/

相关文章:

mysql - 为什么 tinyint 不能在 MySQL 中存储大于 255 的数字?

PHP/mysql应用创建过程

database - Oracle 中的按位异或

mysql - phpmyadmin:数据库事件

php - 失败或成功查询始终返回 true

java - 通过Spring MVC上传二进制文件到MySQL的正确方法

python - MySQL数据库更新到小数点

MySQL DATETIME DIFF 查询

php - 加入表后不从数据库中检索行

database - pgpool 无法创建数据库