关于MySQL表设计,测试人员可以关注哪些点
测试人员关注数据库表设计是“测试左移”的一种手段,可以把有关数据库的潜在bug消灭在系统测试之前,从而提高交付效率。
以MySQL为例,QA可从以下方面对数据库表设计做测试的左移:
1、数据表功能
表结构
- 确保每张表都有主键,且主键值唯一且非空,以保证表中每行数据的唯一性和可识别性
- 检查外键约束是否有效,即外键值必须是对应主键表中存在的值,避免出现孤立数据或无效关联
- 表之间存在关联的,验证表与表之间的关联关系是否正确建立(如主键和外键的设置是否准确,关联字段的数据类型和长度是否一致)
- 评估数据表结构对业务变化的适应性(是否能够灵活地进行调整和扩展,以满足不断变化的业务需求)
表字段
- 字段的数据类型是否符合业务要求(比如数据量大的字段类型设计成int,使用unsignedint或bigint)
- 字段的长度设计是否合理(是否有合理的buffer,兼容后续新业务)
- 不同表,相同含义的字段命名是否统一(多分参与开发时,歧义少,也就降低了bug出现的可能性)
- 不同表,相同含义字段的类型、长度是否一致(不一致时,可能会出现表A正常落库,表B因不能正常落库而发生bug)
- 敏感字断是否经过加密处理(如银行卡号,身份正号,手机号等)
- 约束条件是否符合业务要求(接口设计字段可以空,但表设计字段NOT NULL,提交的时候显然会报错)
- 冗余字段是否贴合实际业务要求(很多时候,RD为了提高扩展性,设计很多无效的字断,会拉低CURD性能)
- 字段有默认值的,检查默认值是否符合业务要求
- 日期字断需要特别关注,是否业务上对日期格式的要求
2、数据表性能
- 对于查询操作会操作的表,是否有设计索引(经常用于查询条件、连接条件或排序的字段,需创建索引)
- 索引的创建是否合理,是否能有效提高查询性能(设计索引的字段应为查询条件的过滤字段)
- 索引是否过度创建(合理的索引可以提高查询性能,但过多的索引会拉低增删改的性能)
- 视图是否合理创建(如果新增表参与联表查询,考虑是否可以使用视图来提高查询速度)
关于MySQL表设计,测试人员可以关注哪些点的更多相关文章
- 面试mysql表设计要注意啥
面试官:讲讲mysql表设计要注意啥? 引言 大家应该知道烟哥最近要(tiao 咳咳咳),嗯,不可描述! 随手讲其中一部分知识,都是一些烟哥自己平时工作的总结以及经验.大家看完,其实能避开很多坑.而且 ...
- mysql表设计注意点
[原创]面试官:讲讲mysql表设计要注意啥 需要设计一个主键 因为你不设主键的情况下,innodb也会帮你生成一个隐藏列,作为自增主键.所以啦,反正都要生成一个主键,那你还不如自己指定一个主键,在有 ...
- 【原创】面试官:讲讲mysql表设计要注意啥
引言 近期由于复习了一下mysql的内容,有些心得.随手讲其中一部分知识,都是一些烟哥自己平时工作的总结以及经验.大家看完,其实能避开很多坑.而且很多问题,都是面试中实打实会问到的! 比如 OK,具体 ...
- <转载>面试官: 讲讲MySql表设计需要注意什么?
作者:孤独烟 出处: http://rjzheng.cnblogs.com/ 综述 近期由于复习了一下MySQL的内容看到一篇比较好的文章,转载分享一下.大家看完,其实能避开很多坑.而且很多问题,都是 ...
- mysql表设计原则
0.三大范式及反范式 ◆ 第一范式(1NF):强调的是列的原子性,即列不能够再分成其他几列. ◆ 第二范式(2NF):首先是 1NF,另外包含两部分内容,一是表必须有一个主键:二是没有包含在主键中的 ...
- mysql表设计
model表 记录网站模块:如视频,音频,调查,01发布内容时.可以指定发布到哪个模块下02可以统计每个模块的访问量设计表注意点01主键不要用id (全部使用 当前表名+id 如modelid)02n ...
- 【MySQL】MySQL表设计的常用数据类型
整数类型,tinyint.smallint.mediumint.int.bigint 如果需要保存整数(不含小数),可以选择tinyint.smallint.mediumint.int.bigint, ...
- 实现类似微信聊天功能的mysql表设计
前言: 最近设计了一套聊天功能,此功能支持人对人聊天.发送图片.查看聊天记录.按时间展示聊天列表.最后一条聊天数据及未读消息数 下面分享一下表结构及实现逻辑: 表结构: 1.聊天主表 id(主键id) ...
- mysql表设计---时间类型
mysql 时间格式的区别 datetime 日期 +时间timestamp 时间戳 格式都是一样YYYY-MM-DD HH:MM:SS int(12)型存储php的time()时间戳,格式10位14 ...
- MySQL表设计:每一种商品有不确定个数的属性
I personally would use a model similar to the following: The product table would be pretty basic, yo ...
随机推荐
- Linux信号量(1)-SYSTEM V
信号量概念 信号量本质上是一个计数器(不设置全局变量是因为进程间是相互独立的,而这不一定能看到,看到也不能保证++引用计数为原子操作),用于多进程对共享数据对象的读取,它和管道有所不同,它不以传送 ...
- OpenHarmony编译构建系统详解,从零搭建windows下开发环境,巨方便!
自从OpenHarmony更新了dev-tool,就可以在windows下构建鸿蒙(轻量型)系统了,这对于进行MCU开发的朋友们,学习鸿蒙OS会友好许多!我们可以更快的构建出系统,方便快速学习和验证. ...
- 使用 prerenderRoutes 进行预渲染路由
title: 使用 prerenderRoutes 进行预渲染路由 date: 2024/8/20 updated: 2024/8/20 author: cmdragon excerpt: prere ...
- 用GDI+旋转多边形来绘制一个时钟摸拟小程序
效果图 在头文件类中声明变量 TCHAR m_dayStr[4]; // 日期 TCHAR m_weekStr[4]; // 星期 Gdiplus::Font* m_pFont; // 字体 Gdip ...
- zabbix 4.0修改页面LOGO
基本页面展示 一.Logo icon-sprite.svg是一个集合的图片,logo和一级菜单栏里面的图标是在这上面平移得到的 第一种方法 1. zabbix安装好以后的默认LOGO如下: 2. ...
- Ynoi2016镜中的昆虫
[Ynoi 2016] 镜中的昆虫 简化题意 给定长为 \(n\) 序列 \(a\) , 两种操作 \(m\) 次: 1 l r x : 将 \([l , r]\) 修改为 \(x\) 2 l r : ...
- android 反编译APK取源代码。
坑,自己写的Android APK 程序,发现线上版本是 1.9.4 ,本地的代码版本却是 1.9.1.不知道到底怎么回事,svn里面也没有日志记录.....只能从线上apk反编译来看看了,幸好这个升 ...
- 2023.7.2-3-4Mssql xp_cmdshell提权
1.概念 Mssql和SQL sever的一个产品的不同名称.都属于微软公司旗下.而上述Mssql xp_cmdshell提权也属于数据库提权的一种. 主要依赖于sql server自带的存储过程. ...
- musl libc 与 glibc 在 .NET 应用程序中的兼容性
musl Linux 和 glibc 是两种不同的 C 标准库实现,它们在多个方面存在显著差异. 历史和使用情况: glibc 是较早且广泛使用的 C 标准库实现,具有较长的开发历史和广泛的社区支持. ...
- 【JS设计模式笔记】-观察者模式(即发布-订阅模式)(结构型)
发布-订阅模式的作用 比如常见的发送短信就是一个典型的发布-订阅模式,例如,小明.小红去售楼处购买房子,但是售楼处的工作人员告诉小明.小红当前楼盘已经售罄,新楼盘还没有开售,这个时候,小明.小红把自己 ...