【发布时间】: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等。