【问题标题】:Linking "Friends" with the account holders profile将“朋友”与帐户持有人资料链接
【发布时间】:2010-07-09 15:55:49
【问题描述】:

我正在设计一个帐户持有人有“朋友”的应用程序。我将如何将这些朋友与原始帐户持有人联系起来?一个高效的 SQL 表会是这样的吗:

AccountHolderID (varChar 20)
FriendsID (nText)

【问题讨论】:

  • 朋友是您系统中的另一个用户/帐户持有人吗?
  • 是的,你是对的。我在想一个 FriendID 必须是一个 foreignKey(所以它不能是 nText),也许?
  • 如果假设每个账户持有人可以有一个或多个朋友,并且每个朋友可以关联一个或多个账户持有人,那么就需要多对多的关系。有关 MySQL 中多对多关系的示例,请参阅我对 this question 的回答。用帐户持有人替换项目,用朋友替换标签,您就有了架构的基础。网络上到处都是关于数据库关系的教程。
  • 您是否打算将 FriendsID 设为 NTEXT 字段以存储“personid1、personid2、personid3”行的字符串?如果是这样,您应该明白这会使涉及该字段的查询非常难以编写并且效率非常低 - 您应该避免在单个字段中存储多个值 - 这不是数据库方式!
  • 是的,本意是说UserID1001有一个朋友UserID2001、UserID3021、UserID3310等。

标签: sql friend


【解决方案1】:

我们实现了类似的东西——用一张桌子来容纳朋友……我们的桌子很简单地分解成一张朋友桌……

AccountHolderId( type)
FriendAccountHolderId ( type)
Created(datetime)  // useful for tracking when the friend was added

两个 Id 字段都链接回 Accounts/Users 表。

【讨论】:

  • 您的 AccountHolderID 和 FriendAccountHolderID 是什么数据类型?你在使用 SQL Server 吗?
  • 我们在 SQL Server 中使用 GUID。 (哇,五年后!)
猜你喜欢
  • 2014-06-21
  • 1970-01-01
  • 1970-01-01
  • 2014-10-09
  • 1970-01-01
  • 2010-12-01
  • 1970-01-01
  • 2011-10-12
  • 1970-01-01
相关资源
最近更新 更多