• 处理非主键的主键


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

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

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

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

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

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

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

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


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

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

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

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

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





  • 相关阅读:
    三种常见的编码:ASCII码、UTF-8编码、Unicode编码等字符占领的字节数
    快学Scala习题解答—第十章 特质
    [LeedCode OJ]#63 Unique Paths II
    收集互联网博客
    Android 内存监测工具 DDMS --> Heap(转)
    (转载)测试工具monkey
    (转载)Git使用教程
    时间戳转换为时间字符串
    二维码相关知识点
    教你跳转到系统指定页面
  • 原文地址:https://www.cnblogs.com/king_astar/p/547250.html
Copyright © 2020-2023  润新知