
在包含分区列的字段上增加全局主键:
在包含分区列的字段上增加全局主键是成功的。
通过上面例子可以看到,使用分区表存在一个潜在风险:如果 ID 在业务意
义上必须是唯一值,但分区列是时间的话,理论上会存在一个不同分区中存在相
同 ID 的情况。在实际系统中,该情况可能会出现在按照时间或地区进行分区的
保单表,客户信息表等关键业务表中。为了避免在使用分区表过程中遇到以上问
题,推荐两个解决思路:
一、通过程序代码进行规避:方式有主键生成器、数据校验等(在此不进行
讨论)
二、将常规的单字段主键拆分成多字段主键,其中必须包含分区字段,如在
非分区表的保单表中保单号规则为 22 位,规则如下:P + 3 位险种代码 + 4 位
年份 + 机构前 4 位 +Q+3 位标识流水位+1 位字符位+5 位流水号,示例:
PLAY20224401Q000E03991,表结构及主键设计如下:
1、非分区表 policy:
主键:
ALTER TABLE policy ADD PRIMARY KEY (policyno);
2、分区表 policy(按照区域分区):
主键:
ALTER TABLE policy ADD PRIMARY KEY (policyno_nozone,zone);
3、分区表 policy(按照时间分区):
主键:
评论