Database design 如何在数据库中存储状态

Database design 如何在数据库中存储状态,database-design,Database Design,我的应用程序正在处理用户请求。每个请求都具有以下状态:“从用户收到的请求的某些部分”、“收到的所有部分”、“已开始处理”、“结果已准备就绪”、“结果已发送给用户”。 我想将请求状态作为一列存储在数据库中。现在我有两个想法如何实施它: 使用字符串列。每个请求状态都存储为文本。对于 实例,即发送给用户的请求,将具有状态 “已发送”的值 (+)即使是不熟悉我的代码的技术人员也可以在查看数据库后理解请求发生了什么 (-)对于存储请求状态,我使用多个字节,但实际上这些信息可以存储在一个字节中(见第2页)

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

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

    • (+)即使是不熟悉我的代码的技术人员也可以在查看数据库后理解请求发生了什么
    • (-)对于存储请求状态,我使用多个字节,但实际上这些信息可以存储在一个字节中(见第2页)
  • 使用整数列。每个请求状态存储为int。例如,“从用户接收的请求的某些部分”=1,“接收的所有部分”=2,“开始处理”=3,“结果准备就绪”=4,“结果发送给用户”=5

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

  • 我认为在一个字节足够的情况下,使用多个字节是没有意义的。我甚至同意编写转换代码(文本状态->整数状态,反之亦然)。但是对于突然出现的中间状态,我该怎么办呢?有不同的方法吗?

    将数据存储为整数不必隐藏信息,您可以创建一个查找表,将整数常量与其文本值关联起来,然后如果您想查看数据的文本表示形式,可以将它们连接起来

    另一方面,除非您计划存储数百万行,或者每秒必须处理数千个事务,否则状态表中额外的几个字节可能不会产生太大的影响


    我不知道你说“突然的中间状态”时问题的后半部分是什么意思。你是否担心以后必须添加更多的状态,或者您正在谈论将从一个状态到下一个状态的转换建模为有限状态机中的状态?

    将数据存储为整数不必隐藏信息,您可以创建一个查找表,将整数常量与其文本值关联起来,然后,如果您想查看数据的文本表示,请加入它们

    另一方面,除非您计划存储数百万行,或者每秒必须处理数千个事务,否则状态表中额外的几个字节可能不会产生太大的影响


    当你说“突然的中间状态”时,我不确定你问题的后半部分是什么意思。你是担心以后必须添加更多的状态,还是在有限状态机中将从一个状态到下一个状态的转换建模为状态?

    我问题的后半部分是-我有点担心,如果我发明更多的状态,它们将是数据库中的最后一个,而不是它们所在的位置。真的,这只是我对秩序的热爱,没什么大不了的。我问题的后半部分是——我有点担心,如果我发明更多的状态,它们将是数据库中的最后一个,而不是它们的位置。真的,这只是我对秩序的热爱,没什么大不了的。