2009-02-26 95 views
0

我正在建立一个数据库,我有兴趣拥有一个类似Facebook的朋友系统。 我原来的计划是有一个表像这样:在MySQL的一个字段中使用多个FK是一个好主意吗?

uid friends 
4 30,23,12,33 
30 54,92,108 

所有这些数字是FK对表与用户信息。 有人告诉我,这是不可取的,也是不可能的,因为如果MySQL是唯一一个放置在单元格中的,它将只处理FK的问题。 所以也许这样?

uid(PK) friend 
4  30 
4  23 
4  12 
30  54 
30  92 
30  108 

等。 这不会给我留下大量的行吗? (成千上万?) 第一种技术在时间和效率方面不值得吗?

回答

5

十几万行是花生,即使是Mysql。没有其他方法可以模拟多对多关系。您将在这些ID上有索引,这些索引在子串比较的许多数量级上执行得更好。

2

我会说第二种方式的确是“正确”的方式来做到这一点 - 并最终优于您几乎在任何方式中提到的第一种方式。是的,它会留下大量的行。

如果编入索引,它应该仍然非常快 - 尽管直到某一点(可能有几十万甚至几百万行)。除此之外,你会想开始研究分区或其他更先进的技术。

1

不值得的时间和效率?如果使用第二种方法,您将获得更高的效率。

相关问题