考虑一个包含大量用户活动的简单网站(如stackoverflow)。什么是存储用户活动的最佳方式,如投票,添加到收藏夹等。据我所知,有两种可能的方式:
反规范化:在文章表格中为“谁已投票”的列中存储投票选项的成员的用户ID。这将是以逗号分隔的ID列表。
规范化:创建关系表以将文章ID连接到用户ID。这种方法具有非常宝贵的优势(我知道大多数人会支持这个想法);但我担心的是(1)这张表很容易达到数百万行。由于它是索引的,因此读取应该足够快,但是更新(定期)长索引表可能会有问题。 (2)每次访问文章页面时,我们都需要再读一个表,这会减慢常规查询的速度。
答案 0 :(得分:0)
您还可以充分利用这两个方面,并拥有一个过渡数据库和一个“脱机”刷新的报告数据库