【问题标题】:Is it good to have job details in the job queue table itself or have the details in a separate table?将作业详细信息放在作业队列表本身中还是将详细信息放在单独的表中好?
【发布时间】:2012-07-27 12:48:39
【问题描述】:

我目前正在设计一个模块,服务或控制台应用程序将从 JobQueue 表中读取 Job。我设计了 JobQueue 表,其中包含以下信息:

JobId: int Primarykey

JobType: int notnull

状态:varchar notnull

CreatedOn: datetime notnull

LastModifiedOn:日期时间可为空

CompletedOn:日期时间可为空

JobType 属性的引入主要是为了使该表更通用,而不是针对特定类型的工作。我的问题是是否将要执行的作业的详细信息保留在此表本身或其他具有引用它的作业 ID 的表中?这是因为我在其他表中有可用的数据。因此,在执行作业时,我们可以间接获取数据。为了避免重复信息,我想到了这样的事情。这是一个好方法吗?需要你的建议

【问题讨论】:

    标签: c# sql-server sql-job job-queue


    【解决方案1】:

    将“其他表”中的所有数据保留在该表中。您需要考虑的是如何使用这些数据。
    如果您要显示一些索引作业,人们可以从中选择一项来查看详细信息,您可以在两个单独的提取中获取数据。或者,如果您需要与作业相关的所有数据(JobQueue 表中的数据加上“其他表”中的数据),您始终可以使用 JOIN 执行一次提取。我不认为将 JobDetails 数据保存在单独的表中会导致任何问题。

    【讨论】:

      【解决方案2】:

      我在这里没有看到很多属性(也许你没有显示那些?)

      我看到一个明确需要的 id (jobID)、类型和状态信息(如果没有这些数据,您将无法理解。)

      然后您就有了审核信息、创建、修改和完成。我自己喜欢在里面放一个字符串来说明谁创建了谁修改了,但是我在我创建的每个表中都有审计信息。当您不确定发生了什么并试图维护数据库时,它总是很有用。

      【讨论】:

      • 感谢 Hogan 的回复。我还在表格中维护创建者、修改者的信息。但我的主要疑问是,是否将作业所需的数据作为作业队列表本身或其他表的一部分来执行,因为我在其他表中有可用的数据,并且可以从那里获取
      • 你在说什么数据?您的问题中没有显示的内容?
      • 是的,这不是作业队列表的一部分。但是有了这些数据,工作就会被执行。
      • 好的,如果你显示数据我可以评论,但似乎你不想把它放在这个表中,你甚至没有包括它带着问题。我迷路了。你为什么考虑把它移到这张桌子上?
      • 我从来没有说过将数据移动到这个表中。数据只不过是作业执行所需的详细信息,它只是作业的输入。它是应用程序将在运行时插入到某个表中的东西,比如 X 表。除了驻留在其他 X 表中之外,我不希望该数据成为此 JobQueue 表的一部分。我现在清楚了吗?
      猜你喜欢
      • 1970-01-01
      • 2011-05-30
      • 2019-11-17
      • 1970-01-01
      • 2018-07-26
      • 1970-01-01
      • 2016-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多