zoukankan      html  css  js  c++  java
  • 【mysql】如何通过navicat配置表与表的多对一关系,一对一关系?设计外键的效果

      背景:

    现在要将接口自动化测试结果持久化,当前只是每次运行接口测试,将测试结果通过邮件发送给项目组成员。邮件内容如下:

     

      表设计

    为了呈现这个结果:我设计了2张表run_result和run_detail(testcase表是已经存在的)

    • run_detail表:测试结果明细
    • run_result表:测试结果
    • testcase表:测试用例

     

      表关系

    run_detail表中的多条记录,对应run_result的1条记录(多对一关系)

    run_detail表中1条记录,必定是属于testcase表中的某1条case(一对一关系)

     

      分析过程:

    run_detail表与run_result表多对一关系

    run_detail表通过字段result_id与run_result表产生关系。

    run_detail表中的result_idrun_result表中的id值(主键)应当是多对一的关系。

     

    run_detail表与testcase表一对一关系

    run_detail表通过字段testcase_idtestcase表产生关系。

    run_detail表中的testcase_id与testcase表中的id值(主键)应当是一对一的关系。

    所以在run_detail表中要保证testcase_id值是唯一的。

    配置方法:【mysql】一对一关系的理解,以及Navicat Premium怎么设置字段的唯一性(UNIQUE)?

      要使表与表之间建立 多对一,一对一关系,需要通过外键

    run_detail表字段设计:

      通过navicat 为run_detail表设计外键:

    名字可以随便起

    第2列字段取当前表中已经存在的字段

    第5列参考字段,取与当前表有关系的表中的字段

       设计外键之后的效果: 

    附上建表SQL语句:

    run_result表:

    CREATE TABLE `run_result` (
      `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
      `bad_api_num` int(10) NOT NULL COMMENT '异常接口数',
      `start_time` datetime NOT NULL COMMENT '开始时间',
      `end_time` datetime NOT NULL COMMENT '结束时间',
      `run_time` varchar(64) NOT NULL COMMENT '测试用时',
      `all_case` int(11) NOT NULL COMMENT '全部case',
      `pass_case` int(11) NOT NULL COMMENT '通过case',
      `fail_case` int(11) NOT NULL COMMENT '失败case',
      `jump_case` int(11) NOT NULL COMMENT '未验证case',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

    run_detail表:

    CREATE TABLE `run_detail` (
      `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
      `result_id` int(11) NOT NULL COMMENT 'run_result表外键 多(detail)对一(result)',
      `testcase_id` int(11) DEFAULT NULL COMMENT 'case编号 值唯一 testcase表外键 一(run_detail)对一(testcase) ',
      `code_state` char(8) DEFAULT NULL COMMENT '状态码(自定义2001表示断言失败,其它为测试接口返回真实状态码,如204)',
      `api_purpose` varchar(50) DEFAULT NULL COMMENT '接口描述',
      `request_url` varchar(100) DEFAULT NULL COMMENT '接口地址',
      `response` varchar(255) DEFAULT NULL COMMENT '接口返回值',
      `creater` varchar(50) DEFAULT NULL COMMENT '创建者',
      PRIMARY KEY (`id`),
      UNIQUE KEY `testcase_id` (`testcase_id`) USING BTREE,
      KEY `detail_result_bfk1` (`result_id`),
      CONSTRAINT `detail_result_bfk1` FOREIGN KEY (`result_id`) REFERENCES `run_result` (`id`),
      CONSTRAINT `detail_testcase_bfk2` FOREIGN KEY (`testcase_id`) REFERENCES `testcase` (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

     

  • 相关阅读:
    lua -- handler
    class() 高级用法 -- lua
    聊聊javascript的null和undefined
    在vue-cli搭建的项目中增加后台mock接口
    vue-cli+webpack在生成的项目中使用bootstrap方法(二)
    vue-cli+webpack在生成的项目中使用bootstrap方法(一)
    Node.js项目APM监控之New Relic
    让sublime text3支持Vue语法高亮显示
    在javascript中获取一个对象内属性的个数
    debian8.5安装sublime text3
  • 原文地址:https://www.cnblogs.com/kaerxifa/p/11640749.html
Copyright © 2011-2022 走看看