看到这个数据库设计,我终于明白了我和其他软测人的差距

01

测试人员为什么要懂数据库设计?

更精准的掌握业务,针对接口测试、Web 测试,都是依照项目/产品需求进行用例设计,如果掌握数据库设计知识,能直接面对开发的数据表,更好、更精准的理解业务逻辑;有的项目中,测试人员还会参与到数据库设计的评审中

更正确的数据库断言,面对接口测试、接口自动化测试,能针对业务特点,快速的构建数据库断言语句

数据库测试与验证,包括数据有效性的验证,设计是否合理(比如是否有插入异常、更新异常、删除异常),数据库压力测试,数据库同步验证等

走向测试开发的基础,如果想逐步成长,进入测试开发的工作中,数据库设计是必须要掌握的基础技能

由此可见,测试从业人员熟悉并掌握数据库设计知识是现实的需要,也是想往上发展的基础。

02

如何进行数据库设计?

要进行数据库设计,需要掌握一些基础技能,包括:

数据库基础知识,包括基本常识、常用概念

数据库设计步骤,掌握如何分析需求,完成概念模型、逻辑模型、物理模型

范式,熟悉常用的规范及要求

实战,掌握根据需求绘制 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

————————————————

版权声明:本文为CSDN博主「软件测试小小白」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/fx20211108/article/details/122003423

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352

推荐阅读更多精彩内容

  • 一星题 日志文件用来记录对数据库中数据进行的每一次更新操作。 索引是在基本表的列上建立的一种数据库对象,它同基本表...
    你不懂的阳阅读 1,056评论 0 1
  • 一.什么是数据库1.1数据库系统:通常由软件、数据库、数据管理员组成1.2数据库管理员DBA:负责全面管理和控制数...
    百码啸西风阅读 352评论 0 0
  • 技术交流QQ群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder的程序人生 1....
    CurryCoder阅读 1,244评论 0 1
  • 第一章、引言 数据库系统有一个相互关联的数据的集合和一组用以访问这些戴护具的程序组成。这个数据集合通常称为数据库。...
    曹元_阅读 2,928评论 0 2
  • 数据库设计,一个软件项目成功的基石。很多从业人员都认为,数据库设计其实不那么重要。现实中的情景也相当雷同,开发人员...
    wwmin_阅读 1,119评论 0 52