从同一张桌子上的两个不同点自动递增?

时间:2019-02-21 15:52:05

标签: database database-design

每个客户都有一个ID。对于每个新客户,它都会增加1。

我的公司希望开始销售给新型客户(我们称其为客户B),并且其ID开始于3万。

这是一个糟糕的设计吗?我们的系统具有设置客户类型的选项,因此无需这样做。在2050年之前,我们预计其他类型的客户都不会达到这个数字(目前为1万)。

我试图说服他们这是一个坏主意……这也无助于第三方尝试实现此目标。

2 个答案:

答案 0 :(得分:2)

混淆技术功能键是一个非常糟糕的主意。技术键被设计为不变,以保持引用完整性并加快连接速度。技术键也应避免在应用程序级别(即在屏幕表格中)公开。

功能键对于应用程序用户是可见的,并且可能会根据新要求进行更改。

另一个不好的主意是使用数字部分来分隔数据分区(在您的情况下为客户组)。具有复杂结构(如社会安全号码)的字符代码是一种更强大且可扩展的解决方案(但是,这也是一种非规范化)。

推荐的解决方案是将技术ID作为自动递增的数字,同时添加功能客户代码。

答案 1 :(得分:1)

如果标识符是面向客户或面向业务用户的,则在设计时要考虑可读性和可用性。大多数人发现使用识别方案在其中进行编码的识别方案非常自然:想到电话号码,车辆牌照号码,航空公司航班号码。有证据表明,结构良好的识别方案可以提高可用性,并减少日常使用中的错误率。您可以期望,精心设计的“有意义的”识别方案将比没有可识别特征的任意递增数字产生更少的错误。

执行此操作本质上没有错。在您的业务环境中是否有意义很大程度上取决于该数字的使用方式。从技术上讲,构建多个独立序列并不困难,例如在SQL中使用SEQUENCE功能。您可能还需要考虑包括其他功能,例如校验位。