我正在为一个小社区建立一个社交网络。每个用户都可以上传图片或发布推文并与其他用户分享。
帖子存储在推文表中
tweets : id , user_id , text , date
图片在图片表中
pics : id , user_id , album_id , title(ie:pic.jpg) , text(description) , date
现在我想在他的墙上将所有这些都显示为用户帖子。我不确定最好的方法是什么。
我可以通过添加第三个表来使用规范化来跟踪用户条目及其类型,例如
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
}
但这意味着更慢的代码和大量的数据库连接,更不用说我必须获得每个条目的注释,从长远来看,这会减慢速度。
所以我希望找到一种方法来通过一个查询获得所有这些。我不知道,也许在两个表之间使用 unoin 或更改数据库设计?