gpt4 book ai didi

mysql - 如何在现有的作业表设计之上设计一个关系数据库来跟踪不同类型的作业和作业状态?

转载 作者:行者123 更新时间:2023-11-29 10:51:27 25 4
gpt4 key购买 nike

现状

我有一个名为 job 的现有表,它会在作业经过商店时对其进行跟踪。它工作正常,但现在我需要不同类别的工作,具有不同的 status循环并且可能有不同的字段。

而且,我不能扔掉或修改job由于大量现有代码+另一个系统正在广泛使用该表,因此该表急剧变化。但我可以添加它,或者稍微修改它,我可以创建其他表,并且我可以根据需要连接它们。

我拥有的是:

enter image description here

我需要跟踪 2 种(目前)不同类型的工作,这些工作具有不同的状态集。

如何?

在 OOP 中思考时,我得到:

一个Job是具有 (number、status、orderedDate、shipDate) 的内容;一个ShopJob是除了 Job 之外的东西有(制造日期);安OfficeJob是除了 Job 之外的东西已(就绪日期);

就我而言,Job是一个抽象类,它本身并不存在。 ShopJob 和 OfficeJob 对其进行了扩展。

事情是这样的:状态字段必须包含不同的作业状态周期。

  • ShopJob.status = {已订购、已审核、已制造、已发货)
  • OfficeJob.status = {已订购、准备就绪、已发货}

如何将其转换为关系 SQL 语言(在我的例子中是 MySQL)?如果需要,我可以填写更多详细信息。

解决方案思路:

我认为最简单但可能不是最好的解决方案是添加 job.type字段 = { shop , office },添加job.readyDate适应办公室工作并使用它。我正在尝试描绘一个更好的设计,但到目前为止还很挣扎。

此外,我需要在工作跟踪器中显示所有工作。因此,如果我设计 5 个不同的表,然后我有 5 种类型的作业,我将需要连接所有这些表并修改我的 SQL 来解释这些表,这很不方便。我想要 SQL 无需修改即可处理新作业类型的东西。

我对 HLGEM 答案的解读:

enter image description here

job_type.type = {"商店", "办公室"}

status.status = {"已订购", "已审核", "已制造", "准备就绪", "已发货"}

job_type_status 将状态分为作业类型

job.job_type_id 表示工作类型 job.id属于

问:我该如何处理job具有脱节的字段,即 manufactured_dateready_date适用于不同类型的工作,但位于同一个表中。

最佳答案

您需要的是一个包含状态类型和日期的 JobStatus 表。然后,您可以拥有一个包含可用状态的状态查找表(statusId、statusName)和一个包含 Jobtypeid 和状态 ID 的 JobTypeStatus 查找表,其中 Jobtypeid 和状态 ID 作为字段(如果频繁更改,则可能还有开始日期和结束日期),以限制您可以选择的状态仅适用于该工作类型的人员。您可以使用它来填充应用程序上用于更改状态的任何下拉列表。

这样您就拥有了作业表(有关可能的重命名,请参见下文),并且您可以加入作业状态以获取该作业的各种状态。您可以将它们全部放在查询中的一行上,或者选择在应用程序中执行此操作,这可能是更好的选择。

要保留旧的工作代码并添加新的结构,最常见的做法是重命名 Job 表,然后创建一个名为 Job 的 View ,该 View 基于提供旧 Job 表所具有的确切字段的查询。有一本关于重构数据库的好书,每个使用数据的人都应该害怕它,https://www.amazon.com/Refactoring-Databases-Evolutionary-paperback-Addison-Wesley/dp/0321774515

关于mysql - 如何在现有的作业表设计之上设计一个关系数据库来跟踪不同类型的作业和作业状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43660571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com