2009-02-26 93 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

不值得的時間和效率?如果使用第二種方法,您將獲得更高的效率。

相關問題