我应该如何在数据库中存储列表

时间:2010-12-26 14:04:38

标签: database-design

如何在网络应用中保存整数列表?

我正在设计一个类似Facebook的应用程序,并为每个用户我需要保存他的朋友的ID,所以在我不考虑的数据库中的csv考虑到用户摄像头甚至有1000个朋友和应该包含此列表的数据库字段是固定的,csv可能会溢出该字段。

我应该将这些列表存储在本地服务器文件中还是数据库仍然是最佳选择?

4 个答案:

答案 0 :(得分:16)

通常使用单独的表来处理多对多关系。

user  |  friend
---------------
1     |  2
1     |  3
2     |  3
etc

然后使用JOIN找出谁是给定用户的朋友

答案 1 :(得分:5)

您正在寻找的是一个连接表,将用户加入到自身。此表中的条目表示一个用户与另一个用户之间的友谊。

用户表

UserID | UserName | FirstName | LastName ...

朋友表

ID | UserID | FriendID

UserID和FriendID都是Users表的外键。您可能希望对该对(UserID,FriendID)和UserID上的非唯一索引具有唯一性约束。请注意,UserID是Users表的PK,ID是Friends表的PK。为Friends表使用单独的PK可以更容易地引用接口中的特定用户/用户对。

答案 2 :(得分:2)

您不应将列表存储在数据库的单个字段中 - 您将无法轻松查询它。多值列几乎总是错误的选择。

在数据库设计方面,您应该有一个多对多表来将用户连接到朋友(您可能还希望在表中存储相应的对立关系,以便轻松遍历双向关系)。

答案 3 :(得分:1)

使用数据库。

今天你可能有1000个朋友。

明天,10000。显然,仅使用CSV无法很好地扩展。