我对自己在数据库中存储数据的简单但重要的问题相关的数据。
假设一个网站有100,000个用户。这些用户可以彼此成为朋友。 ,其存储的方法是理想的哪种方法是更好地存储在表(一个或多个)
方法A:
- 使USERS表一个
friends
字段。类型:文本 - 保存所有好友ID,用
,
连接它们。例如:USER 1的朋友:2,3,4,5,6,... - 最差状态:所有用户都是彼此的朋友,每个用户都有一个FULL TEXT朋友字段。所以在PHP方面,应该分开这个字段与
,
分隔符,这需要一些过程。
方法B:
做出
friendship
表+------+---------------------+ | uid | friend_id | +------+---------------------+ | 1 | 2 | | 1 | 3 | | 1 | 4 | | 1 | 5 | +------+---------------------+
正如你看到的上面,为用户的每个朋友,我应该插入一个新行表。
- 最糟糕的状态:所有用户都是彼此的朋友,所以100,000 x 100,000(不确定)行应该存储在表中。
这两种方法哪一种都可以?性能和优化。
在此先感谢。
方法A是非常可怕的。不要这样对你自己。 – Mat
方法A向数据库中引入一个字符串,数据库通常不能很好地处理字符串/数组(不能加入它们,很难列出朋友列表等)。方法B是最好的,每个朋友关系1行。有趣的是,要读取方法A中的数据,您几乎必须将其转换为已存储的方法。 – Twelfth