当前位置:网站首页>测试要掌握的技术有哪些?软件测试必懂的数据库设计大全篇
测试要掌握的技术有哪些?软件测试必懂的数据库设计大全篇
2022-06-28 01:13:00 【喜欢软测的小北葵】

测试人员为什么要懂数据库设计?
- 更精准的掌握业务,针对接口测试、Web测试,都是依照项目/产品需求进行用例设计,如果掌握数据库设计知识,能直接面对开发的数据表,更好、更精准的理解业务逻辑;有的项目中,测试人员还会参与到数据库设计的评审中
- 更正确的数据库断言,面对接口测试、接口自动化测试,能针对业务特点,快速的构建数据库断言语句
- 数据库测试与验证,包括数据有效性的验证,设计是否合理(比如是否有插入异常、更新异常、删除异常),数据库压力测试,数据库同步验证等
- 走向测试开发的基础,如果想逐步成长,进入测试开发的工作中,数据库设计是必须要掌握的基础技能
由此可见,测试从业人员熟悉并掌握数据库设计知识是现实的需要,也是想往上发展的基础。
如何进行数据库设计?
要进行数据库设计,需要掌握一些基础技能,包括:
- 数据库基础知识,包括基本常识、常用概念
- 数据库设计步骤,掌握如何分析需求,完成概念模型、逻辑模型、物理模型
- 范式,熟悉常用的规范及要求
- 实战,掌握根据需求绘制E-R图、物理模型设计,并落地到数据库产品
基本常识一
数据(Data):承载各类软件业务中重要的载体都称之为数据,数据的类型包括数值、文本、图片、音频、视频等
数据库(DB,Database ):存放上述各类数据的场所或仓库,提供持久化,不易丢失;并且有合理的组织形式,可管理,还能共享
数据库管理系统(DBMS,Database Management System):对数据加进行管理,提供对数据库的存储管理、安全控制、备份、审计等处理

基本常识二
关系型数据库:传统的数据落地存储模式,建立在严格的数据概念基础上,数据间有规范化的关系,支持ACID特性;常见的产品有MySQL、Oracle、DB2、SQL Server等
非关系型数据库:随着互联网的快速发展,异构数据、大数据的到来,高可扩展和高伸缩性的需求增加,产生了各种的非关系型数据库;其特点是非关系型、分布式、扩展方便,但不能完全满足ACID特性;
常见的非关系型数据库有:
- 键值型:Memcached、Redis,多用于缓存
- 列分组型:Hbase等,多用于日志和一些博客平台
- 文档型:MongoDB等,表结构可动态变化,多用于不同结构的日志处理
- 图数据库:Neo4j等,一般做推荐引擎或关系图谱
基础概念
数据表:也称二维表,基础的数据保存单位,由列(字段)和行(记录)组成,如下图
字段:规范数据表结构的最小单元,尽量做到不可再分,如下图的浅蓝底部分
数据类型:描述字段的类型,可以有整型、字符串等
主键:唯一的标识一条记录的字段,如下图的学号、课程ID、成绩ID等
外键:引用其他表数据的字段,如下图成绩表中灰色底的学号和课程ID,引用来自于学生表和课程表
视图:组合一个或多个表输出数据子集,具有隐藏数据复杂性,查询简单等特性,如现在想要设计一个学生成绩的报表,就可以针对下图三个表组织一个视图呈现
函数:类似于程序语言的方法,一般做简单的按规则数据替换或转换
存储过程:预编译,可有输入/输出参数,可包含程序流、逻辑处理、事务等操作,用于处理比较复杂的操作,如数据加工
数据完整性:关联表通过外键要能找到主表数据,否则为数据不完整
数据冗余:重复存储了某些内容,占用存储空间,也会带来不一致的风险

数据库设计步骤
- 需求分析:识别软件需求中的数据的种类、范围、数量、相互间的交流情况和约束条件等
- 概念模型设计:当软件系统的用户需求确定后,要根据用户需求抽象出其中常见的对象,以及对象间的关系,称做E-R(Entity-Relationship)图;常用实体-关系图表示概念模型;如一个教学信息系统中,会抽象出老师、班级、课程、学生等实体,并涉及到老师教授课程、老师带领班级、学生所在班级等关系
- 逻辑模型设计:将概念模型细化,细化出概念模型中实体的属性,实体间关系通过哪些属性体现;如教学信息系统中,老师实体包括ID、姓名、性别等特征,通过在课程表上关联老师ID建立起关系
- 物理模型设计:将上述模型的实体、属性、关系,根据实际的数据库产品,落地成对应的物理表,并构建起表的字段、主键、外键、约束、默认值、是否可空、视图等
- 验证设计:运行基于上述构建数据库的业务系统,来验证设计的数据CRUD时的正确性、合理性
- 运行与维护:随着业务需求的不断迭代,数据库也需要一直的优化和重新设计,以保存数据正确性、合理性,还要考虑新旧业务的兼容与扩展
范式
概述
范式(NF,Normal Form),是关系数据库的理论基础
主要用于数据库结构的设计提供规则和指导,使得设计出的数据具有最好的存储性能、更容易被理解、数据完整性更佳
一共有6种,一般设计中满足1NF、2NF、3NF即可
常见的不满足3NF后带的问题有:数据冗余、插入异常、更新异常、删除异常
第一范式(1NF)
- 规则:要求数据表中所有字段都是原子性不可分割的;一般的设计都能满足1NF;右图满足1NF
- 不遵守带来的问题:后续业务处理不方便,如下图左要按省份分类数据

第二范式(2NF)
- 规则:在1NF基础上,所有非主键列都完全依赖于主键,而不是部分,能有效减少冗余、保证数据完成性;如下图针对组合主键学号+课程ID,右图右计满足2NF
- 不遵守带来的问题:数据冗余、插入异常、更新异常、删除异常;如一个学生有多门课程,就冗余多个学生姓名、新设立一门课程因没有学生考试而必须将学生信息置空、删除某个学员可能导致课程都没有了

第三范式(3NF)
- 在2NF基础上,所有非主键列都直接依赖于主键,不能传递依赖,也能有效减少冗余、保证数据完整性;如下图针对主键课程ID,右图设计满足3NF
- 不遵守带来的问题:主要是数据冗余、插入异常、删除异常等

实战:基于角色的访问控制(RBAC)
需求
一般项目/产品的基础需要,就是需要对不同的用户进行功能授权****
而且,由于用户足够多,天然的会根据人员所在的部门、岗位等情况,某一类人具有相同的授权,也就是需要有“角色”的存在
E-R图

物理模型
- 一般的设计过程中,针对1对多,会拆成主-外键关系;针对多对多,会添加一个中间表
- 小型项目数据库设计,可以直接使用Excel进行
- 中大型项目数据库设计,可以使用PowerDesigner、PDMan等工具
- 具体见附件:《基础角色的访问控制》数据库设计、RBAC.pdm

觉得学到了点个赞再走呗!
边栏推荐
- How does win11 close recently opened projects? Win11 method to close recently opened projects
- Initial linear regression
- Why are so many people keen on big factories because of the great pressure and competition?
- What if win11 cannot use dynamic wallpaper? Solution of win11 without dynamic wallpaper
- How to judge that the thread pool has completed all tasks?
- 为什么大厂压力大,竞争大,还有这么多人热衷于大厂呢?
- "Dadao Zhichuang" won a ten million prea+ round of financing and launched a technology consumption robot
- Win11不能拖拽图片到任务栏软件上快速打开怎么办
- 【电梯控制系统】基于VHDL语言和状态机实现的电梯控制系统的设计,使用了状态机
- 【历史上的今天】6 月 3 日:微软推出必应搜索引擎;Larry Roberts 启动阿帕网;Visual Basic 之父出生
猜你喜欢

Usage details of staticlayout

【历史上的今天】5 月 29 日:共享软件先驱诞生;ChromeBox 推出;VoodooPC 创始人出生

Online JSON to plaintext tool

be fond of the new and tired of the old? Why do it companies prefer to spend 20K on recruiting rather than raise salaries to retain old employees

Character interception triplets of data warehouse: substrb, substr, substring

【Kotlin】在Android官方文档中对其语法的基本介绍和理解

【模糊神经网络】基于matlab的模糊神经网络仿真

Win11 ne peut pas faire glisser l'image sur le logiciel de la barre des tâches

【历史上的今天】5 月 31 日:Amiga 之父诞生;BASIC 语言的共同开发者出生;黑莓 BBM 停运

英特尔锐炫A380显卡即将在中国面市
随机推荐
[today in history] June 18: JD was born; The online store platform Etsy was established; Facebook releases Libra white paper
JDBC and MySQL databases
Summary of software testing tools in 2021 - fuzzy testing tools
字节跳动面试官:一张图片占据的内存大小是如何计算
Stm32f1 and stm32subeide programming example - metal touch sensor driver
Feign远程调用fallback回调失败,无效果
Severe Tire Damage:世界上第一个在互联网上直播的摇滚乐队
StaticLayout的使用详解
> Could not create task ‘:app:MyTest. main()‘. > SourceSet with name ‘main‘ not found. Problem repair
[inverted pendulum control] Simulink simulation of inverted pendulum control based on UKF unscented Kalman filter
Mysql database foundation: DML data operation language
3年功能测试拿8K,被刚来的测试员反超,其实你在假装努力
Is it reliable to invest in the inter-bank certificate of deposit fund? Is the inter-bank certificate of deposit fund safe
[today in history] June 2: Apple launched swift programming language; China Telecom acquires China Unicom C network; OS X Yosemite release
[today in history] May 31: the father of Amiga was born; The co developer of basic language was born; BlackBerry BBM shutdown
[today in history] June 16: Oracle Bone Inscriptions was established; Microsoft MSX was born; The inventor of fast Fourier transform was born
【插件-statistic】统计代码行数和相关数据
[cloud native] - docker installation and deployment of distributed database oceanbase
在线JSON转PlainText工具
Shuttle uses custompaint to paint basic shapes