Database design 数据库设计-澄清
我设计了一个名为“用户请求”的表。它有一个名为STATUS的字段,用于捕获请求的当前状态。可以是已提交、正在进行、已完成等。。。现在我的问题是,我是否必须创建一个主表来保存可能的请求状态?如果是这样的话,有什么好处?您不必这样做,但这样做是一种很好的做法-这种只包含一组值的表通常称为查找表 这样,您可以将用户请求表中的状态值限制为仅对应于可能的状态值 某些数据库允许您定义一个Database design 数据库设计-澄清,database-design,Database Design,我设计了一个名为“用户请求”的表。它有一个名为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
现在,您的应用程序只为每个“流程”步骤提供一个实现。整体“工作流”由状态表定义
通过更改状态的定义,可以轻松地重新配置应用程序
这就是好处