数据拆解入库(暂时未拆解)---H5精准测试服务端接口及数据库表设计

本文主要是介绍数据拆解入库(暂时未拆解)---H5精准测试服务端接口及数据库表设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

详细表设计:

range_coverage_js      与   range_coverage_js_file  是一对多的关系

range_coverage_js_file    与  range_coverage_js_statement  、range_coverage_js_fn、range_coverage_js_branch   一对多的关系

range_coverage_js_branch   与  range_coverage_js_branch_detail  是一对多的关系

 

 

 

range_coverage_js

主表(存储被测应用实时上报的原始数据)

 

CREATE TABLE `totoro_range`.`range_coverage_js` (

`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',

`app_name` VARCHAR(45) NULL  COMMENT'被测应用名',

`commit_id` VARCHAR(45) NULL  COMMENT'当前被测版本的commitId',

`branch` VARCHAR(45) NULL  COMMENT'分支号',

`spring_id` VARCHAR(45) NULL  COMMENT'(迭代)任务id',

`coverage_json_ceph_key` LONGTEXT NULL  COMMENT'上传的覆盖率数据存储的key',

`update_time` DATETIME NULL  COMMENT'更新时间',

`is_deleted` tinyint(1) NOT NULL  COMMENT'0' COMMENT '是否删除'

PRIMARY KEY (`id`));

 

 

前端读取文件:

range_coverage_js_file  

(每个主表合并后的数据拆分解析后的存储文件表)

 

use totoro_range;

CREATE TABLE `totoro_range`.`range_coverage_js_file` (

`id` INT NOT NULL AUTO_INCREMENT,

`app_name` VARCHAR(45) NULL  COMMENT'被测应用名',

`commit_id` VARCHAR(45) NULL  COMMENT'当前被测版本的commitId',

`branch` VARCHAR(45) NULL  COMMENT'分支号',

`spring_id` VARCHAR(45) NULL  COMMENT'(迭代)任务id',

`path` VARCHAR(45) NULL  COMMENT'覆盖率数据中path字段(路径+文件名)',

 `range_file_id`  INT NULL  COMMENT'diff文件id',

`update_time` DATETIME NULL  COMMENT'更新时间',

`is_deleted` tinyint(1) NOT NULL  COMMENT'0' COMMENT '是否删除',

`merge_coverage_Json` longtext COMMENT '单个文件marge后的覆盖率文件',

PRIMARY KEY (`id`))

COMMENT = '文件覆盖率数据';

有range_file_id  但是没有path 对应其它文件就是没有覆盖率

 

CREATE TABLE `totoro_range`.`range_coverage_js_statement`  (

  `id` INT NOT NULL AUTO_INCREMENT,

  `file_id` INT NULL  COMMENT'对应js_file的表的文件id',

  `statement_index` VARCHAR(45) NULL  COMMENT'语句索引编号',   

  `start_line` INT NULL  COMMENT'语句开始行',

  `start_column` INT NULL  COMMENT'语句开始列',

  `end_line` INT NULL  COMMENT'语句结束行',

  `end_column` INT NULL  COMMENT'语句结束列',

  `coverage_times` INT NULL  COMMENT'覆盖次数',

 `update_time` DATETIME NULL  COMMENT'更新时间',

 `is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否删除',

  PRIMARY KEY (`id`))

COMMENT = '语句覆盖率数据';

 

 

use totoro_range;

CREATE TABLE `totoro_range`.`range_coverage_js_fn` (

  `id` INT NOT NULL AUTO_INCREMENT,

  `file_id` INT NULL  COMMENT'对应js_file的表的文件id',

  `fn_index` VARCHAR(45) NULL  COMMENT'方法索引编号',

  `fn_name` VARCHAR(45) NULL  COMMENT'方法名字',

  `fn_decl_start_line` INT NULL  COMMENT'方法申明开始行',

  `fn_decl_start_column` INT NULL  COMMENT'方法申明开始列',

  `fn_decl_end_line` INT NULL  COMMENT'方法申明结束行',

  `fn_decl_end_column` INT NULL  COMMENT'方法声明结束列',

  `fn_start_line` INT NULL  COMMENT'方法开始行',

  `fn_start_column` INT NULL  COMMENT'方法开始列',

  `fn_end_line` INT NULL  COMMENT'方法结束行',

  `fn_end_column` INT NULL  COMMENT'方法结束列',

  `coverage_times` INT NULL  COMMENT'覆盖次数',

  `fn_line` INT NULL  COMMENT'方法所在行',

`update_time` DATETIME NULL  COMMENT'更新时间',

`is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否删除',

  PRIMARY KEY (`id`))

COMMENT = '方法覆盖率数据';

 

 

CREATE TABLE `totoro_range`.`range_coverage_js_branch` (

  `id` INT NOT NULL AUTO_INCREMENT,

  `file_id` INT NULL  COMMENT'对应js_file的表的文件id',

  `branch_index` VARCHAR(45) NULL  COMMENT'分支索引编号',

  `branch_start_line` INT NULL  COMMENT'分支开始行',

  `branch_start_column` INT NULL  COMMENT'分支开列行',

  `branch_end_line` INT NULL  COMMENT'分支结束行',

  `branch_end_column` INT NULL  COMMENT'分支结束行',

  `type` VARCHAR(45) NULL  COMMENT'分支类型',

  `branch_lie` INT NULL  COMMENT'分支所在行',

`update_time` DATETIME NULL  COMMENT'更新时间',

  `is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否删除',

  PRIMARY KEY (`id`))

COMMENT = '分支覆盖率数据';

 

 

CREATE TABLE `totoro_range`.`range_coverage_js_branch_locations` (

  `id` INT NOT NULL AUTO_INCREMENT,

  `branch_id` INT NULL  COMMENT'对应js_branch分支id',

  `sub_branch_location_index` INT NULL  COMMENT'子分支坐标索引编号',

  `sub_branch_start_line` INT NULL  COMMENT'子分支开始行',

  `sub_branch_start_column` INT NULL  COMMENT'子分支开始列',

  `sub_branch_end_line` INT NULL  COMMENT'子分支结束行',

  `sub_branch_end_column` INT NULL  COMMENT'子分支结束列',

  `coverage_times` INT NULL  COMMENT'子分支覆盖次数',

  `update_time` DATETIME NULL  COMMENT'更新时间',

 `is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否删除',

  PRIMARY KEY (`id`))

COMMENT = '子分支覆盖数据';

 

查询某个js文件行覆盖率语句:

select * from  range_coverage_js_statement   where    file_id   =(select id  from   range_coverage_js_file where  app_name =' '  and commit_id = ' ' )

方法覆盖率 :

 select * from   range_coverage_js_fn where    file_id   =(select id  from range_coverage_js_file where  app_name =' '  and commit_id = ' ' )

分支覆盖率:

select * from  range_coverage_js_branch_locations where  branch_id = (  select id  from   range_coverage_js_branch   where    file_id   =(select id  from range_coverage_js_file where  app_name =' '  and commit_id = ' ' )  )

这篇关于数据拆解入库(暂时未拆解)---H5精准测试服务端接口及数据库表设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1042084

相关文章

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

java如何实现高并发场景下三级缓存的数据一致性

《java如何实现高并发场景下三级缓存的数据一致性》这篇文章主要为大家详细介绍了java如何实现高并发场景下三级缓存的数据一致性,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 下面代码是一个使用Java和Redisson实现的三级缓存服务,主要功能包括:1.缓存结构:本地缓存:使

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

C#解析JSON数据全攻略指南

《C#解析JSON数据全攻略指南》这篇文章主要为大家详细介绍了使用C#解析JSON数据全攻略指南,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、为什么jsON是C#开发必修课?二、四步搞定网络JSON数据1. 获取数据 - HttpClient最佳实践2. 动态解析 - 快速

虚拟机Centos7安装MySQL数据库实践

《虚拟机Centos7安装MySQL数据库实践》用户分享在虚拟机安装MySQL的全过程及常见问题解决方案,包括处理GPG密钥、修改密码策略、配置远程访问权限及防火墙设置,最终通过关闭防火墙和停止Net... 目录安装mysql数据库下载wget命令下载MySQL安装包安装MySQL安装MySQL服务安装完成

升级至三频BE12000! 华硕ROG魔盒Pro路由器首发拆解评测

《升级至三频BE12000!华硕ROG魔盒Pro路由器首发拆解评测》华硕前两天推出新一代电竞无线路由器——ROG魔盒Pro(StrixGR7Pro),该产品在无线规格、硬件配置及功能设计上实现全... 作为路由器行业的T1梯队厂商,华硕近期发布了新旗舰华硕ROG魔盒Pro,除了保留DIY属性以外,高达120