Sta*_*bie 8 mysql database database-design data-modeling
如果我想创建一个允许用户拥有0个或更多"朋友"的网站,我将如何在数据库中建模这样的关系?这样简单的工作会是什么:
Table Friends
- Id (PK)
- UserId (FK)
- FriendId (FK)
Run Code Online (Sandbox Code Playgroud)
???
这会让我以后做像Facebook这样的事情(例如"你的3个朋友知道这个用户,也许你也这样做了")?或者类似6度到凯文培根的东西?
编辑1:
Table Friends
- UserId (FK)
- FriendId (FK)
- Status ('Pending', 'Approved', 'Rejected', 'Blocked'?)
Run Code Online (Sandbox Code Playgroud)
这会起作用。以下是需要注意的几点:
每次你必须查询 DOR(关系度)时,你都必须初始化一个图并运行最短路径算法(这是我能想到的最少的优化)。如果您的会员数量增加到几公斤,那么您将如何处理?