【问题标题】:Which one is better database design哪一个是更好的数据库设计
【发布时间】:2016-07-11 09:02:30
【问题描述】:

我正在构建一个包含作业日志的数据库

我现在有这个数据库:

工作:

id || job_name || etc...  

包含状态数据的作业日志

id || job_id || etc.. || job_status_id

要获得当前的工作状态,我依赖于最后插入的状态,但这会导致更难的查询

我在想,如果我这样做: 工作:

id || job_name || etc...  || job_status_id  

但这会导致重复数据,因为 job_status_id 已经存储

因此将 job_status_id 添加到作业表中,而不是根据最后插入的状态来获取当前作业状态 这是更有效的方法吗(它还有其他好处吗)?还是我应该坚持我已经拥有的?

【问题讨论】:

  • 取决于我猜需要什么样的应用程序
  • 两种解决方案都是可行的。如果您将最后一个 job_status_id 添加到 Jobs 中,那么以后从中进行选择会更容易和更快(没有 jons 和复杂的 SQL 逻辑。但是您必须确保最后一个状态始终是正确,即在 job_logs 上实现触发器来更新它。插入和更新会慢一点。

标签: php mysql database


【解决方案1】:

这取决于您的需要。如果它会导致更复杂的查询来获取最后插入的状态,那么拥有一个 Job Status ID 是有意义的。我会使用 ID,因为如果您需要从该字段中查询,如果它成为一个问题,我可以确定它听起来像最后插入的状态计算作业状态,您可以在其上添加一个索引。因此,让初始插入或更新创建作业状态,这样您就不需要每次都计算它。同样,如果您需要的是性能,那么这是更好的方法来推导它。存储很便宜,而且我们谈论的是整数,所以它什么都不是。除非我们在这里谈论 20 毫秒之间的差异。 ;)

【讨论】:

    猜你喜欢
    • 2013-10-07
    • 2018-06-11
    • 2012-11-21
    • 1970-01-01
    • 2011-09-24
    • 2013-08-15
    • 2018-06-27
    • 1970-01-01
    相关资源
    最近更新 更多