mysql - 与自身的多对多关系

标签 mysql database-design relational-database database-schema relationships

我的数据库关系需要一些帮助。我的问题是我不知道我是否以正确的方式解决了这个问题。我有一个应用程序,用户可以在其中与其他用户交 friend ,类似于在 Facebook 上建立友谊。

╔═══════════╗
║   Users   ║
╠═══════════╣
║ #id       ║ 
║ *username ║
║ *password ║
╚═══════════╝

╔══════════════╗
║ User_friends ║
╠══════════════╣
║ *user_id     ║
║ *friend_id   ║
╚══════════════╝    

╔════════════════╗
║ Friend_request ║
╠════════════════╣
║ #id            ║
║ *user_id       ║
║ *friend_id     ║
║ *created_at    ║
║ *updated_at    ║
╚════════════════╝

用户 John Doe 想要登录到我的应用程序并向 Jane Doe 发送好友请求,因此记录将存储在 Friend_request 中并且当 Jane Doe 登录到应用程序时,她会看到一条通知,表明有人想要建立友谊。当 Jane Doe 接受 John Doe 的 好友请求时,我想将两条记录存储到 User_friends 中,因为 John Doe 是 friend Jane DoeJane DoeJohn Doe

有友谊

我不确定我是否以正确的方式解决了这个问题。

最佳答案

你所做的是合理和直接的。

PS 与您指定的(通过#)PRIMARY KEY相比,还有更多的候选键(UNIQUE NOT NULL 列集不包含较小的列集):

Users (username) -- likely -- though not on Stack Overflow
User_friends (user_id, friend_id)
Friend_request (user_id, friend_Id)

PPS Re title "Many to many relationship with itself": 我猜你的意思是在 User_friendsFriend_request 实体类中 Users 与本身”。表表示(应用程序)关系。因此,行中的值是相关的,它们指定的实体也因此是相关的。有从 user_idfriend_id 列到 Users id 的外键。这些通常称为“关系”,尽管它们是事实/约束。 (如果您查询用户的用户名并请求或接受 friend ,那么您将 JOIN Users 自身。)

关于mysql - 与自身的多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35781134/

相关文章:

java - 如何管理与动态创建的数据库的连接

mysql - 数据库设计: how to effectively manage about 4000 databases with mysql

mysql - 在读取密集型 MySQL 数据库中,是否值得创建一个包含 item_id 和 item_summary(来自其他 5 个表的数据)的两列表?

java - 如何区分普通空白字符和其他空白字符

使用 FIND_IN_SET 和多表 JOINS 优化 MYSQL 查询

php - 将图像上传到服务器并存储在MySQL数据库中

docker - 如何实现滚动更新和关系数据库?

java - 我如何为在 MySQL 数据库中保存自身实例的 Java 对象建模?

mysql - 定位字符串中给定位置的字符

database-design - 在高度规范化的 SQL Server 数据库上使用 Microstrategy