Hao*_*Hao 4 database-design primary-key
主要吸引力
我有一个老板(以及用户)希望主键是复杂/智能/有吸引力的控制号码(有点像社会安全号码或信用卡号码格式)
我只是用零填充主键(在视图中)来安抚他们希望使控件编号复杂,智能和有吸引力的愿望.但他们希望它是:前2位的客户端代码,然后4个位数的同比,那么最后4位数字作为交易号该客户端上给定的一年,那么客户的交易数量重置为1的时候,明年流动.每个客户的交易以1开头.例如WM20090001,WM20090002,BB2009001,WM20100001,BB20100001
但是,由于我想尽可能简单,我放弃了他们建议的智能在主键中,我只是保持主键自动增量,无论客户端和年份.但是为了让它看起来不那么沉闷(他们真的坚持把主键作为智能控制号),我让主键看起来很聪明,在查看查询时,我把客户端代码和四位数年份代码放在前面八零填充自动增量键,即WM200900000001.在自动增量主键上排序类似slug的信息.
保持主键自动递增而不管任何其他信息,我们能够在编辑记录时保留其他潜在的副作用问题,例如,如果他们在WM上输入事务时出错,那么他们将客户端代码编辑为BB,如果我们使用智能主键,WM客户的主键在控制数量上会有差距.或者更糟糕的是,而不是让控制数字有差距/孔,用户将要求这些差距的后续记录应该转移达到这些差距,并有后续记录主键重新调整(递减).
PS
新书报价(https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-1044961.html):
"如果你第一次用舌头问他们对他们来说是合理的要求,那么事情最终会好起来的."