私は小さなコミュニティのためのソーシャルネットワークを構築しています。各ユーザーは、写真をアップロードしたり、ツイートを投稿したりして、他のユーザーと共有することができます。
投稿はツイートテーブルに保存されます
tweets : id , user_id , text , date
写真は写真テーブルにあります
pics : id , user_id , album_id , title(ie:pic.jpg) , text(description) , date
今、私はそれらすべてを彼の壁のユーザー投稿として表示したいと思います。これを行うための最良の方法がわかりません。
3番目のテーブルを追加して正規化を使用し、次のようなタイプのユーザーエントリを追跡できます。
user_entries: id , entry_type(tweet , pic ) , date
今私はすることができます:
$entries = $db->get_entries( $user_id );
foreach ( $entries as $ent ){
if($ent->entry_type == 'tweet' )
$db->get_tweet($ent->id);
// show a tweet and for each one get it's comments
if($ent->entry_type == 'pic' )
$db->get_pic($ent->id);
// show a pic and for each one get it's comments
}
しかし、それは、コードが遅くなり、データベース接続が多くなることを意味します。もちろん、各エントリのコメントを取得する必要があり、長期的には速度が低下します。
そのため、1つのクエリでこれらすべてを取得する方法を見つけたいと思っていました。わからない、多分2つのテーブル間でunoinを使用するか、データベース設計を変更するか?