存储每个用户的朋友列表的最佳方式



我想在SQL Server数据库中存储每个用户的朋友列表。我很困惑

  1. 我应该为每个用户使用表,
  2. 我应该只为每个人使用一张桌子还是
  3. 还有其他最好的方法(我要经常查询)?

当我查询时,我该如何获得单个用户的所有朋友?

当我们说SQL Server时,我们说RDBMS。

然后是标准化INF,2nfand 3rdnf ...,这是您的问题如何使用户和他的朋友数据库正常化。

我的观点,您需要三个表

Individual (IndId (PK), Name ...)
User (UserId (PK), IndId (FK to Individual Table), login, password etc)
Friends(FID(PK), UserId (FK to User Table), IndId (FK to Individual Table))

让用户的所有朋友

Select I.* from Friends F
     JOIN User U on F.UserId=U.UserId // Get all friends of all users
     JOIN Individual I on I.IndId =F.IndId // Get there names etc
   Where I.Name = 'MyFriend' // filter a friend

我所做的工作是为所有 tbl_users 列表而创建的。然后为 tbl_friendslist 创建另一个表。 tbl_friendslist 表的功能是存储用户表的ID。用户10添加的用户11数据将存储在 tbl_friendslist 表中,我的用户枚举将用户枚举为标记,如果用户11接受,请拒绝请求。

您应该有2个表:

tbl_users 将有一个User_ID

tbl_friends 将具有Friend_IDFriend_User_ID

相关性将在TBL_Users.User_IDTBL_Friends.Friend_User_ID

之间

您需要两个表。用户(ID,用户名,...)Userfriendship(ID,Touserid,Fromuserid,requestStatus,requestStatusReason)

示例:我想和您成为朋友(我们是用户,所以用户表具有我们的记录)

Touserid:您的用户IDFromuserid:我的用户IDResquestStatus:请求,接受或枚举值,因此在SQL Server中使用tinyint int int int int int int int int int int int int int int int int in。请求statusreason:这个区域非常重要。认为您首先接受了,然后拒绝了我。该区域将存储该细节。

指定您的必需品,然后您可以自己设计我只是尝试检查。

最新更新