赞
踩
“ 实践是检验真理的唯一标准”
个人觉得程序员应该具备两个比较重要的能力: 表设计 和 条例清楚的编码习惯。
表设计的基本规则是: 一对一时, 两个表都可以放对方的主键; 一对多时,在"多"方存放"一"方的主键; 多对多时, 需要建中间表来存放双方主键的关联关系。
编写代码的基本原则: 一个方法只对应一个功能。任何复杂的需求都可以拆分成N个小功能点, 根据功能点编写成不同的方法, 既有利于阅读, 也有利于调整, 灵活性更强。
同一个文件多次导入时需要能区分,防止多次导入/多次入库
一个Excel文件有多个sheet,治理的对象是sheet,不是文件
同一个文件/同一个sheet支持多次治理
相同格式的sheet文件可以共用之前设置的治理规则
治理后数据中,相同格式的数据属于同一类数据, 这类数据要满足规则中的所有需求, 比如去重, 是拿所有相同格式的数据一起去重
需要显示文件处理数据进度条,显示成功/失败/排除的条数
1.创建时间、修改时间(mysql中这样配置,代码不需要做任何处理,会自动添加值、自动更新)
`create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
2. 文件表(import_file)和Excel单元表(sheet_info)
对于整个项目来说是以文件为维度的, 对于代码层面来说是以sheet为最小数据单元的. 所以设计了两个表
文件表中包含字段file_md5,作用是用来区分文件,避免同一个文件重复上传, 重复数据上传
单元表和文件表的关系是: 多对一的关系, 在单元表中保留文件id的冗余字段.
单元表是跟数据直接关联的, 所以增加了total字段,方便后续的文件处理时获取原数据总条数
3. 源数据表(source_data)跟单元表(sheet_info)
源数据表和单元表是直接关系, 多对一的关系, 所以在源数据中有sheet_id字段
源数据和文件表(import_file)是间接关系,可以增加冗余字段file_id,也可以不加
4.文件头映射表(header_info)
字段data_type是用来区分源数据/治理后数据的, 治理后有可能导致源数据的映射表的字段发生变更:增加/减少, 所以需要将治理的头映射表保存一份
data_type=govern时为治理头映射的数据, 它跟治理数据表(govern_data)整体上来考虑也是:一对一, 我这里就根据字段来header_no进行关联,在治理数据表中增加了header_no字段
5.治理规则表(govern_rule)
因为规则是跟字段挂钩了,所以规则表跟头映射表(header_info)密切相关
相同格式的文件数据可以使用之前使用过的治理规则记录, 引用字段header_no来标识
治理后的数据也要满足所有的header_no字段相同的治理规则
6.治理数据表(govern_data)
它跟文件单元表(sheet_id)/文件头映射表(header_no)/治理规则表(rule_no) 直接关联
具有相同的文件头映射表标识的字段(header_no)的记录, 也要满足 治理规则表(govern_rule) 中对应的规则
冗余之前的源数据id(source_id)
7.治理记录表(govern_record)
它跟跟文件单元表(sheet_id)/文件头映射表(header_no)/治理规则表(rule_no) 直接关联
记录总条数(total_num), 成功条数(success_num), 异常条数(error_num), 筛选排除条数(filtration_num),方便后期增加进度条功能
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。