如何使用有序状态建模属性?

时间:2014-02-18 14:46:49

标签: database-design data-modeling

处理具有有序状态的属性是我多次处理过的事情。例如,问题跟踪器中的问题可能包含openpendingclosed状态。为了使排序和查询更容易,将状态存储为整数很有诱惑力。但是,这使得添加新状态变得不那么重要了?例如,当状态存储为整数时,介于delayedpending之间的新状态closed将引入问题。

是否存在使用可排序类型(如整数)来存储问题状态而不影响可扩展性的模式或概念?

我想到的一种方法是避免后续的价值观。最好将0分配给open1,而不是将pending分配给10open分配给20。到pending为可扩展性留出空间。这是一种常见的模式吗?

3 个答案:

答案 0 :(得分:0)

我认为使用具有特定偏移量的整数(例如10,20,......)只是一个黑客攻击,但没有针对您的问题的一般概念解决方案。

一般解决方案是使用具有两个正整数值属性(如StateenumNo)的类(如seqNo),一个用于为(提供)的标识符( State)枚举文字,以及用于定义线性顺序的文字。

答案 1 :(得分:-1)

它已经在七十年代被BASIC应用了。

答案 2 :(得分:-1)

编辑: 排序模式不会在关系模型中退出,因为它违反了第一个正规形式和关系定义。非关系数据库模型使用List或Array数据结构来定义排序。