对于通常的数据而言,表的设计,就一个主键。
可是,对于订单数据来讲,除了流水号这个主键以外,还有一个订单号。
流水号,供系统内部使用,即供技术层面使用。
订单号,供系统外部使用,是给人看的。html
1.电商行业
2.支付行业
3.物流行业数据库
流水号,做为主键,和其余主键同样,只要保证惟一性便可,具体实现方法,通常是采用数据库序列号递增的设计。segmentfault
订单号,因为是给人(用户、售后、运营等)看的,因此,与流水号相比,就多了两点要求:
1.可读性
2.安全性缓存
可读性
订单包含一些基本信息,方便人阅读,这个很少说。安全
安全性
在可读性的基础之上,还要确保数据的安全性,即不能让人看出来订单的交易量。.net
总结
流水号,只要确保惟一性便可。线程
订单号,须要考虑如下3点要求:
1.惟一性
2.可读性
3.安全性设计
1.对于能够拿到用户id的状况,订单号生成规则以下:htm
用户id,泛指可以惟一标识当前用户的id。最好是公开的、非隐私的数据,如商家号。blog
若是须要对用户id进行保密,那么能够对用户id进行hash。
2.对于拿不到用户id(例如,能拿到商家id可是拿不到用户id)的状况,使用更复杂的生成规则:
总结
生成规则最重要的一点是,保证当前请求的惟一性。
https://segmentfault.com/q/10...
http://www.jianshu.com/p/331b...
https://www.biaodianfu.com/sn...