zoukankan      html  css  js  c++  java
  • 处理非主键的主键

    靠,怎么能取这个拗口的题目。

    啥子意思?什么是主键?
    我觉得主键数据中不能被修改和删除的区别其他记录的数据。
    什么又是非主键的主键呢?

    很多时候在企业开发中,真正在数据库定义的主键其实并不是主键,通产是XXId定义为主键,但其他列中可能是主键。
    比如:BOM系统中,物料编码应该为唯一,可惜很多bom系统里面是定义它是唯一索引,却不一定是主键。如果在数据层没有定义为主键,这个数据理论和事实上就会被修改。

    在企业其他的引用此BOM的物料编码的时候,一旦BOM系统的物料编码被修改,结果造成下游的数据出现断层,一些数据无法关联对应。

    呵呵,这就是我讲的“非主键”的主键。

    以下说的到的主键就代表的是“非主键”的主键。

    当主键被修改或删除的时候会带来上游数据链和下游数据链的脱节,造成业务上面处理错误。

    比如:象刚才的问题就会造成计算BOM成本的时候少算一些BOM清单。
    而且这种隐含的错误,会在意想不到的时候造成大家对系统的不信任感。


    所以,我们要注意这种隐含主键在整个企业中的影响。
    说了危害,我说说我处理这种主键的方法。

    当然,最简单的方法莫过于直接在数据层定义为主键,不过,不是任何系统都是我开发,理想虽好,但不一定能做到了。

    我的方法是 - 建立异常报告,建立自动恢复功能。

    实现技术很多,但大概方向应该是这样的。

    把主键的变化记录下来,其他的系统通过定时扫描的方式(或者通过远程调用挂接接口的方式)把自身用的数据根据主键变化记录表进行纠正。





  • 相关阅读:
    springcloud随便写点
    简单的数组排序
    简单wait(),notify()方法
    热词
    mysql日期函数
    springboot和jsp,以及引入jquery
    用户,权限,角色的关系
    通过字节码获取到的方法
    数据库并发事物
    在spring的业务层获取request,response
  • 原文地址:https://www.cnblogs.com/king_astar/p/547250.html
Copyright © 2011-2022 走看看