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

相关文章

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

MybatisPlus service接口功能介绍

《MybatisPlusservice接口功能介绍》:本文主要介绍MybatisPlusservice接口功能介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录Service接口基本用法进阶用法总结:Lambda方法Service接口基本用法MyBATisP

使用SpringBoot整合Sharding Sphere实现数据脱敏的示例

《使用SpringBoot整合ShardingSphere实现数据脱敏的示例》ApacheShardingSphere数据脱敏模块,通过SQL拦截与改写实现敏感信息加密存储,解决手动处理繁琐及系统改... 目录痛点一:痛点二:脱敏配置Quick Start——Spring 显示配置:1.引入依赖2.创建脱敏

MyBatis设计SQL返回布尔值(Boolean)的常见方法

《MyBatis设计SQL返回布尔值(Boolean)的常见方法》这篇文章主要为大家详细介绍了MyBatis设计SQL返回布尔值(Boolean)的几种常见方法,文中的示例代码讲解详细,感兴趣的小伙伴... 目录方案一:使用COUNT查询存在性(推荐)方案二:条件表达式直接返回布尔方案三:存在性检查(EXI

Python FastMCP构建MCP服务端与客户端的详细步骤

《PythonFastMCP构建MCP服务端与客户端的详细步骤》MCP(Multi-ClientProtocol)是一种用于构建可扩展服务的通信协议框架,本文将使用FastMCP搭建一个支持St... 目录简介环境准备服务端实现(server.py)客户端实现(client.py)运行效果扩展方向常见问题结

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Python数据分析与可视化的全面指南(从数据清洗到图表呈现)

《Python数据分析与可视化的全面指南(从数据清洗到图表呈现)》Python是数据分析与可视化领域中最受欢迎的编程语言之一,凭借其丰富的库和工具,Python能够帮助我们快速处理、分析数据并生成高质... 目录一、数据采集与初步探索二、数据清洗的七种武器1. 缺失值处理策略2. 异常值检测与修正3. 数据