2011-10-26 11 views
0

私の友達システム用にデータベースをレイアウトするにはどうすればいいですか?私は現在の行の列挙型を変更する必要があり、要求を確認し、ユーザの際友人のシステムPHPとMySQLのクエリ?

  1. :私は、私はそれが行われるべきだと思うかはどれ

    id (int) | friendID (int) | accepted (enum) 
    

    、このようにそれを行うにはただ一つの質問を行っていましたそれを確認したユーザーのために別の行を挿入しますか?すなわち、

    1 | 4 | yes 
    4 | 1 | yes 
    

または私は別のものを挿入することなく、1つの行からの両方の関係を引き出すことができる方法はありますか?

ie。この場合

1 | 4 | yes 

答えて

1

私はスペースが安いことから、それぞれの友人のために二度挿入することが優れていると思うし、あなたはおそらくあまり頻繁に読むよりたくさんの友達を追加することがあります。あなたはしかし、スペースを節約したい場合は、あなたがからの友人選択の方法に変更することができます:PHP側で、その後

select friendId, id from friends where id=$userId or friendId=$userId 

select friendId from friends where id = $userId 

をfriendIdまたはIDが現在ある場合は、チェックしますログインしたユーザーなど

+0

スペースを節約してどういう意味ですか? – MHowey

+1

友人が2回挿入されているときは、テーブルを2倍長く作っているということです。これにより、where句に 'OR'を必要としないため、より高速な読取りクエリが必要になります。しかし、頻繁に読むつもりなら、間違いなくfriendIdにインデックスを追加する必要があります。これにはいくらかのスペースも必要です。 – uncreative

関連する問題