测试人员关注数据库表设计是“测试左移”的一种手段,可以把有关数据库的潜在bug消灭在系统测试之前,从而提高交付效率。

以MySQL为例,QA可从以下方面对数据库表设计做测试的左移:

1、数据表功能

表结构

  • 确保每张表都有主键,且主键值唯一且非空,以保证表中每行数据的唯一性和可识别性
  • 检查外键约束是否有效,即外键值必须是对应主键表中存在的值,避免出现孤立数据或无效关联
  • 表之间存在关联的,验证表与表之间的关联关系是否正确建立(如主键和外键的设置是否准确,关联字段的数据类型和长度是否一致)
  • 评估数据表结构对业务变化的适应性(是否能够灵活地进行调整和扩展,以满足不断变化的业务需求)

表字段

  • 字段的数据类型是否符合业务要求(比如数据量大的字段类型设计成int,使用unsignedint或bigint)
  • 字段的长度设计是否合理(是否有合理的buffer,兼容后续新业务)
  • 不同表,相同含义的字段命名是否统一(多分参与开发时,歧义少,也就降低了bug出现的可能性)
  • 不同表,相同含义字段的类型、长度是否一致(不一致时,可能会出现表A正常落库,表B因不能正常落库而发生bug)
  • 敏感字断是否经过加密处理(如银行卡号,身份正号,手机号等)
  • 约束条件是否符合业务要求(接口设计字段可以空,但表设计字段NOT NULL,提交的时候显然会报错)
  • 冗余字段是否贴合实际业务要求(很多时候,RD为了提高扩展性,设计很多无效的字断,会拉低CURD性能)
  • 字段有默认值的,检查默认值是否符合业务要求
  • 日期字断需要特别关注,是否业务上对日期格式的要求

2、数据表性能

  • 对于查询操作会操作的表,是否有设计索引(经常用于查询条件、连接条件或排序的字段,需创建索引)
  • 索引的创建是否合理,是否能有效提高查询性能(设计索引的字段应为查询条件的过滤字段)
  • 索引是否过度创建(合理的索引可以提高查询性能,但过多的索引会拉低增删改的性能)
  • 视图是否合理创建(如果新增表参与联表查询,考虑是否可以使用视图来提高查询速度)

关于MySQL表设计,测试人员可以关注哪些点的更多相关文章

  1. 面试mysql表设计要注意啥

    面试官:讲讲mysql表设计要注意啥? 引言 大家应该知道烟哥最近要(tiao 咳咳咳),嗯,不可描述! 随手讲其中一部分知识,都是一些烟哥自己平时工作的总结以及经验.大家看完,其实能避开很多坑.而且 ...

  2. mysql表设计注意点

    [原创]面试官:讲讲mysql表设计要注意啥 需要设计一个主键 因为你不设主键的情况下,innodb也会帮你生成一个隐藏列,作为自增主键.所以啦,反正都要生成一个主键,那你还不如自己指定一个主键,在有 ...

  3. 【原创】面试官:讲讲mysql表设计要注意啥

    引言 近期由于复习了一下mysql的内容,有些心得.随手讲其中一部分知识,都是一些烟哥自己平时工作的总结以及经验.大家看完,其实能避开很多坑.而且很多问题,都是面试中实打实会问到的! 比如 OK,具体 ...

  4. <转载>面试官: 讲讲MySql表设计需要注意什么?

    作者:孤独烟 出处: http://rjzheng.cnblogs.com/ 综述 近期由于复习了一下MySQL的内容看到一篇比较好的文章,转载分享一下.大家看完,其实能避开很多坑.而且很多问题,都是 ...

  5. mysql表设计原则

    0.三大范式及反范式 ◆ 第一范式(1NF):强调的是列的原子性,即列不能够再分成其他几列.  ◆ 第二范式(2NF):首先是 1NF,另外包含两部分内容,一是表必须有一个主键:二是没有包含在主键中的 ...

  6. mysql表设计

    model表 记录网站模块:如视频,音频,调查,01发布内容时.可以指定发布到哪个模块下02可以统计每个模块的访问量设计表注意点01主键不要用id (全部使用 当前表名+id 如modelid)02n ...

  7. 【MySQL】MySQL表设计的常用数据类型

    整数类型,tinyint.smallint.mediumint.int.bigint 如果需要保存整数(不含小数),可以选择tinyint.smallint.mediumint.int.bigint, ...

  8. 实现类似微信聊天功能的mysql表设计

    前言: 最近设计了一套聊天功能,此功能支持人对人聊天.发送图片.查看聊天记录.按时间展示聊天列表.最后一条聊天数据及未读消息数 下面分享一下表结构及实现逻辑: 表结构: 1.聊天主表 id(主键id) ...

  9. mysql表设计---时间类型

    mysql 时间格式的区别 datetime 日期 +时间timestamp 时间戳 格式都是一样YYYY-MM-DD HH:MM:SS int(12)型存储php的time()时间戳,格式10位14 ...

  10. MySQL表设计:每一种商品有不确定个数的属性

    I personally would use a model similar to the following: The product table would be pretty basic, yo ...

随机推荐

  1. Java异常详解(全文干货)

    介绍 Throwable Throwable 是 Java 语言中所有错误与异常的超类. Throwable 包含两个子类:Error(错误)和 Exception(异常),它们通常用于指示发生了异常 ...

  2. get方法传参后端接收数据异常 - 特殊字符需转义

    get方法传参的时候,如果有特殊字符,如 + 等,无法被识别,导致后端处理异常,所以,get方式,如果有特殊字符,需要转义后再请求接口 1.java 特殊字符转义 URLEncoder.encode( ...

  3. Unable to tunnel through proxy. Proxy returns "HTTP/1.1 503 Service Unavailable"

    背景: 某日,一正常项目迁移到新的服务器 新的服务器,需要使用代理来访问之前能直接访问的接口,加完代理之后,发现无法获取数据了 报错: org.springframework.web.client.R ...

  4. Mac M1 汉化 postman V9.12.2

    1. mac上安装 postman 访问:https://www.postman.com/downloads/ 选择 apple chip 2. 访问 https://github.com/hlmd/ ...

  5. DOM – Web Components

    前言 Web Components 已经听过很多年了, 但在开发中用纯 DOM 来实现还是比较少见的. 通常我们是配搭 Angular, React, Vue, Lit 来使用. 这篇就来讲讲纯 We ...

  6. c# 常用反射和表达式树整理

    更新: 2021-06-19 反射 local function https://stackoverflow.com/questions/43348128/reflection-how-do-i-fi ...

  7. 十,Spring Boot 的内容协商的详细剖析(附+Debug调试说明)

    十,Spring Boot 的内容协商的详细剖析(附+Debug调试说明) @ 目录 十,Spring Boot 的内容协商的详细剖析(附+Debug调试说明) 1. 基本介绍 2. 准备工作 3. ...

  8. 手撸MQ消息队列——循环数组

    队列是咱们开发中经常使用到的一种数据结构,它与栈的结构类似.然而栈是后进先出,而队列是先进先出,说的专业一点就是FIFO.在生活中到处都可以找到队列的,最常见的就是排队,吃饭排队,上地铁排队,其他就不 ...

  9. Vue3——Vue Router

    安装 vue-router 依赖包 npm install vue-router@4 创建 router 文件夹,然后在里面创建一个 index.ts 文件,用于定义你的路由配置 // index.t ...

  10. CCF CSP-S 2024 提高组初赛解析

    本解析不提供阅读程序与完善程序题目的代码,如有需要请通过 luogu.com.cn 相关链接 下载 如有谬误烦请指正 答案 AACBB BDABD ACBCD ✓××BC ✓✓✓BCC ✓×✓CAC ...