我正在进行构建CMS的练习,该CMS将组织我的雇主每次获得新的销售订单时生成的许多常用文档。每个新的销售订单都有一个5位数字(12222,12223,122224等等),但在内部我们对这些数字应用了层次结构:
+ 121XX
|--01
|--02
+ 122XX
|--22
|--23
|--24
在我的销售订单表中,最好使用5号数字作为ID并填充,还是更好地使用我们在常规对话中引用作业时使用的层次结构?不按顺序填充的唯一好处似乎是在我的视图中稍后格式化数据,但这听起来不足以成为完成额外工作的理由。
由于
答案 0 :(得分:1)
绝对应该使用5位数ID作为主键。有时,明显的答案是简单的答案。
答案 1 :(得分:0)
“为数字标识符中的子字段赋予意义的人有一个特殊的地狱。”
虽然我当然可以欣赏并重视这句话,但我觉得有必要补充说,如果业务是这样的,那恰好是用于订单的编号系统,如果碰巧是业务确实附加了子字段的含义,然后实现支持该业务的自动化系统的IT人员别无选择,只能通过该编号系统。
(那些IT人员可能会指出这些系统的缺点,但它并不适合IT人员来决定业务应该是什么样的应该是什么样的。)
答案 2 :(得分:0)
这看起来像是一个用于在机柜中组织OS目录或马尼拉文件而不是数据模型的系统。所以问题是,这种双层结构的价值是什么?是否有任何属性或功能附加到更高的部分(121XX等)?如果没有,这只是一个显示问题,应该这样处理。
另一方面,我认为实施(121XX,01)作为复合业务密钥并使用代理键作为主键并没有任何实际损害。有一个需要注意的问题:如果销售额增加,您可能会达到100K订单,此时订单号将点击到六位数。在大多数数据库中,自然排序顺序为:
100XX
1000XX
101XX