数据拆解入库(暂时未拆解)---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

相关文章

Spring 请求之传递 JSON 数据的操作方法

《Spring请求之传递JSON数据的操作方法》JSON就是一种数据格式,有自己的格式和语法,使用文本表示一个对象或数组的信息,因此JSON本质是字符串,主要负责在不同的语言中数据传递和交换,这... 目录jsON 概念JSON 语法JSON 的语法JSON 的两种结构JSON 字符串和 Java 对象互转

Python如何精准判断某个进程是否在运行

《Python如何精准判断某个进程是否在运行》这篇文章主要为大家详细介绍了Python如何精准判断某个进程是否在运行,本文为大家整理了3种方法并进行了对比,有需要的小伙伴可以跟随小编一起学习一下... 目录一、为什么需要判断进程是否存在二、方法1:用psutil库(推荐)三、方法2:用os.system调用

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

usb接口驱动异常问题常用解决方案

《usb接口驱动异常问题常用解决方案》当遇到USB接口驱动异常时,可以通过多种方法来解决,其中主要就包括重装USB控制器、禁用USB选择性暂停设置、更新或安装新的主板驱动等... usb接口驱动异常怎么办,USB接口驱动异常是常见问题,通常由驱动损坏、系统更新冲突、硬件故障或电源管理设置导致。以下是常用解决

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr

数据库面试必备之MySQL中的乐观锁与悲观锁

《数据库面试必备之MySQL中的乐观锁与悲观锁》:本文主要介绍数据库面试必备之MySQL中乐观锁与悲观锁的相关资料,乐观锁适用于读多写少的场景,通过版本号检查避免冲突,而悲观锁适用于写多读少且对数... 目录一、引言二、乐观锁(一)原理(二)应用场景(三)示例代码三、悲观锁(一)原理(二)应用场景(三)示例

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

SpringValidation数据校验之约束注解与分组校验方式

《SpringValidation数据校验之约束注解与分组校验方式》本文将深入探讨SpringValidation的核心功能,帮助开发者掌握约束注解的使用技巧和分组校验的高级应用,从而构建更加健壮和可... 目录引言一、Spring Validation基础架构1.1 jsR-380标准与Spring整合1

Python中使用正则表达式精准匹配IP地址的案例

《Python中使用正则表达式精准匹配IP地址的案例》Python的正则表达式(re模块)是完成这个任务的利器,但你知道怎么写才能准确匹配各种合法的IP地址吗,今天我们就来详细探讨这个问题,感兴趣的朋... 目录为什么需要IP正则表达式?IP地址的基本结构基础正则表达式写法精确匹配0-255的数字验证IP地