Database design 数据库设计-澄清

Database design 数据库设计-澄清,database-design,Database Design,我设计了一个名为“用户请求”的表。它有一个名为STATUS的字段,用于捕获请求的当前状态。可以是已提交、正在进行、已完成等。。。现在我的问题是,我是否必须创建一个主表来保存可能的请求状态?如果是这样的话,有什么好处?您不必这样做,但这样做是一种很好的做法-这种只包含一组值的表通常称为查找表 这样,您可以将用户请求表中的状态值限制为仅对应于可能的状态值 某些数据库允许您定义一个枚举类型,该类型将以这种方式约束值。您不必这样做,但这样做是一种很好的做法-此类仅包含一组值的表通常称为查找表 这样,您可

我设计了一个名为“用户请求”的表。它有一个名为STATUS的字段,用于捕获请求的当前状态。可以是已提交、正在进行、已完成等。。。现在我的问题是,我是否必须创建一个主表来保存可能的请求状态?如果是这样的话,有什么好处?

您不必这样做,但这样做是一种很好的做法-这种只包含一组值的表通常称为查找表

这样,您可以将用户请求表中的状态值限制为仅对应于可能的状态

某些数据库允许您定义一个
枚举
类型,该类型将以这种方式约束值。

您不必这样做,但这样做是一种很好的做法-此类仅包含一组值的表通常称为查找表

这样,您可以将用户请求表中的状态值限制为仅对应于可能的状态


某些数据库允许您定义一个
枚举
类型,该类型将以这种方式约束值。

状态是一个状态对象

状态对象不仅仅有一个名称(“已提交”、“正在进行”、“已完成”)

大多数情况下,状态对象都有一组合法的下一个状态。某些状态(即“已完成”)没有下一个状态

大多数情况下,状态对象都有一个进程,该进程会将对象从一个状态推进到下一个状态。在某些情况下,您实际上可以将该进程命名为状态的一部分

你应该有一张这样的桌子

State Name | Process          | Success Next State | Failure Next State 
submitted  | start "some.sh"  | in progress        | submitted
in progress| check script     | completed          | failed
现在,您的应用程序只为每个“流程”步骤提供一个实现。整体“工作流”由状态表定义

通过更改状态的定义,可以轻松地重新配置应用程序


这就是好处。

状态是一个状态对象

状态对象不仅仅有一个名称(“已提交”、“正在进行”、“已完成”)

大多数情况下,状态对象都有一组合法的下一个状态。某些状态(即“已完成”)没有下一个状态

大多数情况下,状态对象都有一个进程,该进程会将对象从一个状态推进到下一个状态。在某些情况下,您实际上可以将该进程命名为状态的一部分

你应该有一张这样的桌子

State Name | Process          | Success Next State | Failure Next State 
submitted  | start "some.sh"  | in progress        | submitted
in progress| check script     | completed          | failed
现在,您的应用程序只为每个“流程”步骤提供一个实现。整体“工作流”由状态表定义

通过更改状态的定义,可以轻松地重新配置应用程序

这就是好处