我需要一些关于数据库关系的帮助。我的问题是,我不知道我是否正确地解决了这个问题。我有一个应用程序,用户可以与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 是 Jane Doe 和 Jane Doe 的朋友与 John Doe
我不确定我是否以正确的方式解决了这个问题。
答案 0 :(得分:1)
你所做的事情是合理而直截了当的。
PS还有一些候选键(UNIQUE NOT NULL
列集不包含较小的列)而不是您指定的PRIMARY KEY
(通过#):
Users (username) -- likely -- though not on Stack Overflow
User_friends (user_id, friend_id)
Friend_request (user_id, friend_Id)
PPS Re标题“与自身的多对多关系”:我猜你的意思是在User_friends
和Friend_request
实体类中,用户与自身有很多对多的关系。表表示(应用程序)关系。因此,行中的值是相关的,因此它们指定的实体是相关的。有user_id
和friend_id
列到Users id
的FOREIGN KEY。这些通常是称为“关系”,尽管它们是事实/约束。 (如果您查询了用户和被请求或接受的朋友的用户名,那么您应JOIN
Users
自己。)