2009-02-26 12 views
0

私はデータベースを設定しています。私はFacebookのような友達システムを持つことに興味があります。すべてのこれらの数字はFKのユーザー情報を持つテーブルにあることをMySQLの1つのフィールドに複数のFKを置くことをお勧めしますか?

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

: 私の当初の計画はそうのようなテーブルを持っていることでした。 MySQLがFKの唯一のものであれば対処するので、これは避けられないもので、実際には不可能だと言われました。 これは多分このような何か?

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

電気ショック療法。 これは私に膨大な数の行を残しませんか? (数万?) 最初の手法は時間と効率の点でそれほど価値がありませんか?

答えて

5

数千の行は、Mysqlの場合でもピーナッツです。多対多の関係をモデル化する他の方法はありません。これらのIDには索引があります。これらの索引は、部分文字列比較よりも優れたパフォーマンスを発揮します。

2

私は、2番目の方法は実際にそれを行う "正しい"方法であり、最終的にはほぼすべての方法で言及した最初の方法より優れていると言います。そして、はい、それはあなたに膨大な数の行を残します。

索引付けされている場合でも、ポイント(おそらく数十万、場合によっては数百万行)までは非常に高速でなければなりません。それを超えると、パーティショニングやその他の高度なテクニックを調べ始めるでしょう。

1

時間と効率性の価値はありませんか? 2番目の方法を使用すると、効率が大幅に向上します。

関連する問題