详细分析”百词斩“数据库,如何实现一个良好的数据库系统?

系统环境如下:
操作系统:Windows10家庭版 x64
CPU: 8th Gen Intel i7
内存:8G
MySQL版本:5.5.61
Navicat for MySQL 版本:11.0.9
文章类别:提升
适用类型:对数据库感兴趣的学生、计算机专业学生、开发人员想对数据库优化

这篇文章也算是2020年的一篇MySQL的总结。

文章目录

  • 【写在前面】
  • 前言
  • 一、数据库设计初期
  • 二、数据库开发时期
  • 三、数据库测试时期
    • 1.V1版本完善时期
    • 2.引入去中心化分发式保存数据库的概念
    • 3.去中心化分发式保存示例
    • 4.DBA日常维护,保持定期备份的良好习惯
    • 5.数据库测试
      • 5.1测试表
      • 5.2 测试结论
  • 四、思维拓展时期--后端开发学习
  • 总结
  • 附录Ⅰ:文章附属教学资源


【写在前面】

       本文的数据库并不是完全和“百词斩©”相同,如有侵权,请私信,作者一定改!作者只是模拟了一个数据库系统,将相关数据库文件做一个模拟,作者只是使用“百词斩©”软件比较频繁,也比较喜欢,故用此平台作为一个教学的模板,本文仅供教学使用,严禁商业化!!!如需引用本文,请标注文章地址,谢谢合作!

前言

       数据库设计是一个工程量大而庞杂的工作,因此在设计出良好的数据库前,一定是“反复探寻,逐步求精”的过程,希望看完此文后可以对你编写数据库带来帮助。


一、数据库设计初期

       首先,我们在设计数据库前要先讲讲数据库设计的定义,这样子我们才能更深刻地了解数据库设计,做到“知己知彼,百战不殆”。

数据库设计(Database Design)
       是指根据用户的需求,在某一具体的数据库管理系统上,设计数据库的结构和建立数据库的过程。数据库系统需要操作系统的支持。
        数据库设计是建立数据库及其应用系统的技术,是信息系统开发和建设中的核心技术。由于数据库应用系统的复杂性,为了支持相关程序运行,数据库设计就变得异常复杂,因此最佳设计不可能一蹴而就,而只能是一种“反复探寻,逐步求精”的过程,也就是规划和结构化数据库中的数据对象以及这些数据对象之间关系的过程。
——百度百科《数据库设计》

讲讲我们当时想写这个数据库的缘由:

       由于当时我们处于刚刚考完CET-4/6的状态,故我们打算基于CET-4/6的单词开发一个数据库系统。我的智库——数据库应用员在开发前做了一些问卷调查,为我们后期设计做好铺垫。

PS:问卷在此快速入口,也可见作者上传文件

       我们在开始也遇到诸多困难,就是设计的不够合理,刚开始和SD(系统设计员,下同)讨论设计好的E-R图的时候发现一个问题,我们对应关系当时出现了分歧,但是最终通过调查问卷进一步细化了。


二、数据库开发时期

       我和程序员以及SA(系统分析员,下同),SD一同开始制作我们数据库的基本框架,刚开始我们只有3个表,分别是用户表、单词表、学习记录表,在我们开发无思路的时候,我提出我们可以仿照百词斩来写这个数据库,后面我们围绕这个基础逐步完善,将原有的单词表进一步划分为四级词典表和六级词典表,以此来更符合我们仿照百词斩数据库的设计。在设计之初,我心里面就有个模板,这样子来引导小组成员可以更快地抵达目标。与此同时,我们数据库设立了2-3个视图,7-8个存储过程、2个触发器。e.g.:我们建立了一个四六级总单词库的视图,这样子可以实现原来单词表汇总的功能,建立记录单词表视图,方便将信息录入。
详细分析”百词斩“数据库,如何实现一个良好的数据库系统?_第1张图片


三、数据库测试时期

1.V1版本完善时期

       测试员和我联系,我分发相关的权限给测试员,并且及时做好数据库备份,顺应时代的要求,我们小组采取了去中心化分发式保存,当然还没有做到NoSQL的步骤,但是未来我们继续完善我们的系统,来达到我们的功能。
详细分析”百词斩“数据库,如何实现一个良好的数据库系统?_第2张图片
详细分析”百词斩“数据库,如何实现一个良好的数据库系统?_第3张图片

2.引入去中心化分发式保存数据库的概念

       由于之前听过区块链的课程,故我只做了一种意义上的分发式——就是将数据库存到各个组员的电脑中,去中心化,即——将核心数据保存在我的电脑数据库中,我的电脑数据库相当于服务器中心。当结构或数据进行更改时,记录版本,写入注释,如:图17的V1版本和图19的V2版本,以最大程度保证安全。
详细分析”百词斩“数据库,如何实现一个良好的数据库系统?_第4张图片

3.去中心化分发式保存示例

       不同的数据库存放在不同的用户中,有点类似cookies。

详细分析”百词斩“数据库,如何实现一个良好的数据库系统?_第5张图片

4.DBA日常维护,保持定期备份的良好习惯

       像一些大型的平台,容易受到黑客的攻击,故我们对重要的数据进行维护,防止数据库被破坏造成损失。
详细分析”百词斩“数据库,如何实现一个良好的数据库系统?_第6张图片
       我让测试员进行了用户使用时数据库奔溃恢复的模拟操作,执行分发式保存在测试员电脑中的百词斩核心数据库备份文件(BCZHX.sql),然后我在虚拟机上模拟我们的数据库服务器中心遭受网络攻击,破坏了数据库文件,执行完整数据库备份文件(BCZWZ.sql),执行后的结果都成功了。为了更贴近企业开发,我们制作了日志管理,如图23.
       当然,由于我们写这个数据库比较匆忙,且还有一些功能想加入其中,故在测试时也发现了很多问题,这将在为了的V3版本中做更新及修改维护。

5.数据库测试

下面是由我们小组的诗琪测试的结果:

5.1测试表

序号 测试内容 输入的数据及操作 预期结果 实际结果 是否成功 失败原因
1 用户表数据插入 insert into tb_user values('1800333333','xm','123','1','[email protected]','快乐') 插入成功 插入失败 缺少插入数值
2 用户表数据插入 insert into tb_user values(‘1800333333’,‘xm’,‘123’,‘1’,‘[email protected]’,‘快乐’,‘20200101’)
insert into tb_user values(‘18001’,‘白月’,‘123’,‘1’,‘[email protected]’,‘hello’,‘20201222’)
insert into tb_user values(‘18002’,‘秦风’,‘123’,‘0’,‘[email protected]’,‘hello’,‘20201222’)
insert into tb_user values(‘18003’,‘韩川’,‘123’,‘0’,‘[email protected]’,‘hello’,‘20201222’)
insert into tb_user values(‘18001’,‘andy’,‘123’,‘1’,‘[email protected]’,‘hello’,‘20191222’)
insert into tb_user values(‘18001’,‘wendy’,‘123’,‘1’,‘[email protected]’,‘hello’,‘20191222’)
插入成功 插入成功 -
3 用户表数据重复插入 insert into tb_user values('18001','andy','123','1','[email protected]','hello','20191222') 插入失败 插入成功 未设置用户资料不可重复注册
4 用户表数据查看 select*from tb_user 查看成功 查看成功 -
5 用户表数据删除 DELETE from tb_user where u_nickname = 'xm' 删除成功 删除成功 -
6 用户表数据修改 select*from tb_user 查看成功 查看成功 -
7 四六级单词表表数据插入 insert into tb_cet4_dictionary values('1','ability','[əˈbɪləti]','能力') 插入成功 插入成功 -
8 用户表数据修改 select*from tb_user 查看成功 查看成功 -

5.2 测试结论

       百词斩数据库的基本框架已搭建完成,数据库内已包含大量可用数据,整体功能与设计文档相符。此数据库的增删查改等功能均能可正常运行,各表的连接性强,查询便捷,需求覆盖面广,实用性较高。虽仍有部分功能待开发,但实质内容已相对完整.

四、思维拓展时期–后端开发学习

       在此,特别感谢百词斩团队,谢谢你们优秀的作品带给我们的学习。
详细分析”百词斩“数据库,如何实现一个良好的数据库系统?_第7张图片
详细分析”百词斩“数据库,如何实现一个良好的数据库系统?_第8张图片


总结

       由于篇幅有限,我最后希望我们今后可以落实这个项目!谢谢大家!没有大家我们无法实现这个项目.




附录Ⅰ:文章附属教学资源

[1]仿百词斩数据库©
[2]设计前调查问卷
[3]作者之前写数据库时遇到的问题初学者如何解决SQL Server “试用期已过” 的问题。


会定期更新本文,以后会开付费专栏。谢谢大家的支持。

你可能感兴趣的:(数据库编写思维学习,付费知识之数据库学习,关系型数据库,mysql,运维,mysql优化,数据库,大数据)