我必须创建一个系统来保存用户对两种不同类型模块的投票:News
和Video
。
此表应具有相同的字段:
id
entry_id
vote
user_id
因此,我很难添加一个新字段来保存模块的名称(module
),这样我就可以在数据库中只有一个表,并在需要时对其进行过滤,并创建两个views
用于统计。
我真的不知道最好的解决方案是一个带有新字段的表,还是最好有两个不同的表。
让我们假设我有1000
新闻和1000
用户,他们都会投票给我在表中有1000000
行的每条新闻
现在假设我还有1000
视频,在这种情况下,我的所有用户都会投票给它,其他1000000
行代表单个表中的2000000
行。
在这种情况下,我的性能有问题吗?如果我会有更多的视频,新闻和用户?
我应该做的操作:
- 插入
- 更新
- 搜索
如果您需要更多信息,请询问
我认为回答这个问题的方法是基于entry_id
。投票将是关于something的,而something[/em>将引用另一个表。
因此,如果您有两个单独的News
和Videos
表,那么您应该有两个独立的votes
表。两者都不会有entry_id
。一个将具有CCD_ 16,另一个具有video_id
。
如果你有一个表,比如说News
和Videos
都有Entries
,那么就有一个表格。
换句话说,我建议不要让一个表有条件地引用多个其他表。一方面,表达外国关键限制变得非常困难。此外,join
操作表达起来很繁琐。其他人可能访问了该表,却没有意识到entry_id
可以引用多个表,并错误地设置了查询。
所有这些问题都是可以克服的(在某些情况下,一张表可能是首选的解决方案)。但是,如果原始实体在不同的表中,则将投票放入不同的表。