Moe*_*ine 4 php mysql sql database data-structures
我正在社区网站上工作.我想在网站的2个位置显示用户的活动.
例如,表格是:
我的问题是在Sql结构中.我读过这个问题 "用户最近的活动 - PHP MySql"
"联盟"的想法很好但我有另一个想法.我打算做个新桌子
田野:
id | user_id | photo | video | friend | p_id | v_id | f_id | datetime
Run Code Online (Sandbox Code Playgroud)
假设用户刚上传了一张图片.
id | user_id | photo | video | friend | p_id | v_id | f_id | datetime
1 | 15 | 1 | 0 | 0 | 1203 | 0 | 0 | NOW()
Run Code Online (Sandbox Code Playgroud)
好处:
缺点:
任何想法,或建议大型网站如何处理它?digg,facebook等
我认为你的单表方法最好是正确的.然而,一个缺点是它不能很好地扩展 - 如果你想添加链接或评论活动类型怎么办?使用此模型,您必须为每个模型添加另一列.我在Rails-land中看到的一种方法是使用多态模型,它看起来像这样:
id | user_id | activity_type_id | p_id | v_id | f_id | datetime
Run Code Online (Sandbox Code Playgroud)
您可以看到我已经替换了视频,照片等activity_type_id.然后会有第二个表叫做activity_types:
id | name
----+-------
1 | photo
2 | video
3 | ...
Run Code Online (Sandbox Code Playgroud)
然后,当您创建一个members_activity记录时,您可以分配适当的记录activity_type_id,如果您想稍后创建新的活动类型,则相对SELECT轻松JOIN,您可以使用简单的特定类型的活动,例如:
SELECT * FROM members_activity
JOIN activity_types ON members_activity.activity_type_id = activity_types.id
WHERE activity_types.name = 'photo';
Run Code Online (Sandbox Code Playgroud)