我的数据库关系需要一些帮助。我的问题是我不知道我是否以正确的方式解决了这个问题。我有一个应用程序,用户可以在其中与其他用户交 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 Doe 和 Jane Doe 与 John 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_friends
和 Friend_request
实体类中 Users 与本身”。表表示(应用程序)关系。因此,行中的值是相关的,它们指定的实体也因此是相关的。有从 user_id
和 friend_id
列到 Users id
的外键。这些通常称为“关系”,尽管它们是事实/约束。 (如果您查询用户的用户名并请求或接受 friend ,那么您将 JOIN
Users
自身。)
关于mysql - 与自身的多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35781134/