我有一个处理任务的系统,可以有不同类型的任务。例如,也许有一个“修复计算机任务”和一个“修复电话任务”。我想更新每个任务的当前状态,但是由于它们是不同类型的任务,所以它们可能共享或不共享类似的状态。我在想什么是最好的方法来处理这样的事情。
因此,对于计算机任务,一些状态可能是:
然后,对于电话任务,我们会有:
如您所见,一些状态重叠,而有些状态是该类型的唯一状态。您是为每个任务类型创建一个新的状态表,还是有更好的方法来处理这样的事情?
发布于 2016-02-02 05:42:05
有不止一个有效的答案。以下是两种相互竞争的方法,各有优缺点。
方法1:针对每种任务类型的不同状态表(列为status_id和status_name)。如果您还在每种任务类型(例如computer_tasks_tbl和phone_tasks_tbl)中跟踪不同表中的任务,这是合适的,因为这样您就可以在每个任务表和其相应的状态表之间定义外键约束。这一优势在于确保了数据库级别的数据完整性,并且模式是设计的有用文档。缺点是,如果有越来越多类型的任务,您将最终得到许多表,并且需要更频繁地更新模式。
方法2:用于所有可能的状态的单一状态表。其优点是这简化了模式,特别是当您有许多不同类型的任务时,这意味着随着时间的推移,您必须进行更少的模式更改。缺点是您无法享受外键约束的数据完整性保证,并且完全依赖应用程序插入良好的数据。
作为所有的设计决策,这涉及到一个权衡。在这种情况下,它是数据完整性保证与模式的简单性和稳定性之间的权衡。
https://stackoverflow.com/questions/35145593
复制相似问题