与自己有很多很多关系

时间:2016-03-03 19:21:23

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

我需要一些关于数据库关系的帮助。我的问题是,我不知道我是否正确地解决了这个问题。我有一个应用程序,用户可以与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

有友谊

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

1 个答案:

答案 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_friendsFriend_request实体类中,用户与自身有很多对多的关系。表表示(应用程序)关系。因此,行中的值是相关的,因此它们指定的实体是相关的。有user_idfriend_id列到Users id的FOREIGN KEY。这些通常是称为“关系”,尽管它们是事实/约束。 (如果您查询了用户和被请求或接受的朋友的用户名,那么您应JOIN Users自己。)