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

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

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


【写在前面】

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

前言

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


一、数据库设计初期

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

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

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

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

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

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


二、数据库开发时期

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


三、数据库测试时期

1.V1版本完善时期

       测试员和我联系,我分发相关的权限给测试员,并且及时做好数据库备份,顺应时代的要求,我们小组采取了去中心化分发式保存,当然还没有做到NoSQL的步骤,但是未来我们继续完善我们的系统,来达到我们的功能。
数据库V1版本更新
数据库V2版本更新

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

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

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

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

在这里插入图片描述

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

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

5.数据库测试

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

5.1测试表

序号测试内容输入的数据及操作预期结果实际结果是否成功失败原因
1用户表数据插入insert into tb_user values('1800333333','xm','123','1','by@163.com','快乐')插入成功插入失败缺少插入数值
2用户表数据插入insert into tb_user values(‘1800333333’,‘xm’,‘123’,‘1’,‘by@163.com’,‘快乐’,‘20200101’)
insert into tb_user values(‘18001’,‘白月’,‘123’,‘1’,‘by@163.com’,‘hello’,‘20201222’)
insert into tb_user values(‘18002’,‘秦风’,‘123’,‘0’,‘qf@163.com’,‘hello’,‘20201222’)
insert into tb_user values(‘18003’,‘韩川’,‘123’,‘0’,‘hc@163.com’,‘hello’,‘20201222’)
insert into tb_user values(‘18001’,‘andy’,‘123’,‘1’,‘ad@163.com’,‘hello’,‘20191222’)
insert into tb_user values(‘18001’,‘wendy’,‘123’,‘1’,‘wd@163.com’,‘hello’,‘20191222’)
插入成功插入成功-
3用户表数据重复插入insert into tb_user values('18001','andy','123','1','ad@163.com','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 测试结论

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

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

       在此,特别感谢百词斩团队,谢谢你们优秀的作品带给我们的学习。
在这里插入图片描述
在这里插入图片描述


总结

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




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

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


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

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PianoboyRichardX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值