2011-11-26 26 views
1

我的应用程序正在处理用户请求。每个请求具有以下状态:“从用户接收到的请求的某些部分”,“接收到的所有部分”,“开始处理”,“结果已准备好”,“结果发送给用户”。 我想将请求状态作为单个列存储在数据库中。现在我有两个想法如何实现它:如何在数据库中存储状态

  1. 使用字符串列。每个请求状态都以文本形式存储。对于 实例,发送给用户的请求将具有 值“已发送”。

    • (+),即使不熟悉我的代码可以理解在寻找DB后做什么用的要求发生了技术员
    • ( - )存放我使用多个字节的请求状态,thougn其实这个信息可以存储在一个字节中(见第2页)
  2. 使用整数列。每个请求状态都存储为int。例如,“从用户接收的请求的某些部分”= 1,“接收的所有部分”= 2,“开始处理”= 3,“结果准备就绪”= 4,“结果发送给用户”= 5。

    • (+)当你查看数据库时,你无法理解发生了什么。需要编写一个将整数转换为文本表示的代码。当你突然决定,“结果准备就绪”和“结果发送给用户”之间应该是“用户同意获得结果”的状态,你必须接受“用户同意得到结果”的状态将是6,而不是“结果准备就绪”(4)和“结果发送给用户”(5)之间,这对我来说似乎有些不合逻辑。
    • ( - )使用尽可能少的空间尽可能

我看到有在当一个字节是足够使用多于一个字节没有意义。我甚至同意写转换代码(文本状态 - >整数状态,反之亦然)。但是我应该如何处理突然的中间状态?有不同的方法吗?

回答

1

将数据存储为整数不一定要隐藏您的信息,您可以创建一个查找表,将整数常量与其文本值相关联,然后在查看数据的文本表示时加入它们。另一方面,除非您计划存储数百万行,或者每秒处理数千个事务,否则状态表中额外的几个字节可能没有太大区别。

当你说“突然的中间状态”时,我不确定你的问题的后半部分是什么意思。您是否担心之后需要添加更多状态,或者您是否正在讨论将模型从一个状态转换到下一个状态作为有限状态机中的状态?

+0

我的问题的后半部分是 - 我很担心,如果我发明更多状态,它们将是数据库中的最后一个,而不是它们的位置。真的,这只是我对订单的热爱,没什么严肃的。 – Graf

+0

我明白了。 ;-) – Bill

相关问题