假设某天某公司做了一个拥有很多子系统的项目,其中有一些公共的字典表可能被多个子系统用到。例如一个产品类型表tb_product,基本的字段有 fid(ID),fname (名称),fprice (价格)。
在A子系统中需要一个标识来控制信息是否展示,所以负责这个子系统的A程序员就修改了表,添加了个字段IsShow。某天B子系统也需要一个标识来实现它的控制,所以负责的B程序员也添加了个字段IsFlag 。。。。 这个故事就这样发展下去了。
在某年某月某天,某个重要的子系统X突然异常了。debug的结果是X系统中需要从字典表tb_product中查找所有的记录,负责的X程序员写了select * from tb_procut 这样的语句,而就在刚才Y程序员给tb_product中添加了个isFlagY标识。
在某某年某某月某某天,Z程序员负责Z子系统在编码过程中不小心写了个delete语句,删掉了一条数据,于是A、B、C、C、E......一直到Y 子系统全崩溃,老板大发雷霆要炒了Z。
以上问题在现实中很常见,很多WEB程序员在做系统设计和编码的时候并没有考虑到这个问题。最常见的就是做个XXX管理系统,上面给了几张基础数据表,匆匆地看几眼就开始写Bean画页面了,写到一半发现少个控制字段,就直接修改表结构,没有问下能否修改,修改了会不会有问题。更甚的是有时候别人已经提醒过,还是为了图方便,求速度置之不理。
好的解决方法就是建立好字典表,如果有其他子系统需要使用,则在相应的子系统建立一份copy。子系统可以在这个copy的基础上添加自己需要的字段。即使字典表被破坏也不会立即影响到各个子系统的运行。
原始表和copy表之间可以通过“触发器”、“定时拉取”的方式进行同步。触发器可以实时同步,并且在触发规则里定义更新的条件,例如我要删除字典表内的数据,如果子某个系统定义这条数据不可删除就可在触发器的代码规则里体现出来。
定时拉取的方式更适合于大数据量批量更新,规则更宽松,延时更长。
分享到:
相关推荐
民族字典表,可作为系统建设字典表使用,Excel文件格式
HIS系统字典信息
中国铁塔动环监控系统中,对于监控设备,统一定义设备的各个信号,文档为标准信号字典表
接上一个系统图书馆系统,此为该系统的数据库连接中的表以及数据结构类型等。下载了上一个内容的如果需要记得下载!
用于生成Android系统自带的Latin键盘字典表(main.dict)所需的XML文件,里面现有1400多常用英文单词 用法:java -jar makedict.jar src.xml out.dict
SQLServer系统数据库表结构详细说明 sysobjects syscolumns systypes等表结构字段说明
标准国家行政区域编码及名称字典表,适用于各种系统。
OA系统数据字典
金税三期核心征管系统数据字典,chm文档,最新版本,包含各种申报表字段等信息。
易飞ERP 9.0 系统数据字典 Access 格式 含数据表对应名称以及数据表内字段对应的名称
oracl JDE 数据字典,有兴趣或者需要的朋友可以下载
医疗机构医院信息系统数据接口规范—数据字典(2019版).pdf
Oracle系统字典表与动态视图
融合计费分系统数据字典@局数据表.doc
自己摸索出来的netezza 数据库的系统视图和数据字典,基本满足一些运维需求
本文件包括ecology所有的数据库表的结构,例如工作流引擎常用的表:workflow_base 工作流信息表 workflow_bill 工作流单据信息表 workflow_billfield 工作流单据字段表 workflow_flownode 工作流节点信息表 workflow...
客户关系管理系统数据字典 其中 关于字段的详细解说 且表表与表之间的相互关系 尽在其中
Free仓储管理系统后台数据表,及各数据表字段描述和意义。
这个压缩文件里面含有ecology所有的数据库表的序号 中文名称 英文名称 数据类型 长度 允许空值 主键 默认值 自增 说明等信息
久其Ci所有模块数据字典 SYS_ACR_INPTDT_CHKD(已核对原始记录表) GUID VARCHAR2(120) 否 - 唯一编号 DXFL_GUID VARCHAR2(32) 是 - 抵消分录GUID SOLUTION VARCHAR2(32) 是 - 方案的GUID TASKPREFIX VARCHAR2(6) ...