【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;

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM