数据库设计 - 澄清

时间:2010-07-01 11:17:05

标签: database-design

我设计了一个名为 USER_REQUESTS 的表格。它有一个名为 STATUS 的字段,其目的是捕获请求的当前状态。它可以是提交,进行中,完成等等...现在我的问题是,我是否必须创建一个主表来保存可能的请求状态?如果是这样,会有什么好处?

2 个答案:

答案 0 :(得分:3)

你没有拥有,但最好这样做 - 这种只包含一组值的表通常被称为查找表。

这样,您可以将 USER_REQUESTS 表中的 STATUS 值限制为仅对应于可能的 STATUS 值。

某些数据库允许您定义以这种方式约束值的ENUM类型。

答案 1 :(得分:0)

状态是状态对象。

州对象不仅仅是一个名称(“已提交”,“正在进行中”,“已完成”)

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

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

你应该有这样的表。

State Name | Process          | Success Next State | Failure Next State 
submitted  | start "some.sh"  | in progress        | submitted
in progress| check script     | completed          | failed

现在,您的应用程序仅为每个“流程”步骤提供实现。整个“工作流程”由您的州表定义。

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

这是好处。