详细分析”百词斩“数据库,如何实现一个良好的数据库系统?
系统环境如下:
操作系统: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.V1版本完善时期
测试员和我联系,我分发相关的权限给测试员,并且及时做好数据库备份,顺应时代的要求,我们小组采取了去中心化分发式保存,当然还没有做到NoSQL的步骤,但是未来我们继续完善我们的系统,来达到我们的功能。
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 “试用期已过” 的问题。
会定期更新本文,以后会开付费专栏。谢谢大家的支持。
详细分析”百词斩“数据库,如何实现一个良好的数据库系统?相关推荐
- TFTP协议详细分析
TFTP协议详细分析 1. 目的 TFTP是一个传输文件的简单协议,它其于UDP协议而实现,但是我们也不能确定有些TFTP协议是基于其它传输协议完成的.此协议设计的时候是进行小文件传输的.因此它不具备 ...
- 分析编程题c语言,二级C语言部分上机编程题详细分析
<二级C语言部分上机编程题详细分析>由会员分享,可在线阅读,更多相关<二级C语言部分上机编程题详细分析(6页珍藏版)>请在人人文库网上搜索. 1.二级C语言部分上机编程题详细分 ...
- 友友球捕获率_宝可梦剑盾速刷亲密度方法 无极汰那详细分析
宝可梦剑盾速刷亲密度攻略,怎么做才能在不减少宝可梦属性的前提下大量提升宝可梦的亲密度呢,一起来猪猪手游网看看本期攻略,为大家介绍速刷亲密度攻略,千万不要错过哦! 主要的能够提升宝可梦亲密度的方法分为三 ...
- mysql数据库视图原理_详细分析mysql视图的原理及使用方法
前言: 在MySQL中,视图可能是我们最常用的数据库对象之一了.那么你知道视图和表的区别吗?你知道创建及使用视图要注意哪些点吗?可能很多人对视图只是一知半解,想详细了解视图的同学看过来哟,本篇文章会详 ...
- mysql sqlyog讲解_详细讲解如何用SQLyog来分析MySQL数据库
来源: 互联网 作者: 若水 2008-03-25/10:09 用SQLyog来分析MySQL数据库: SOLyog的下载.安装以及使用很简单.我去了相关网站下载,它只有384K字节大小.它把两个文件 ...
- 详细分析本机号码一键登录原理
详细分析本机号码一键登录原理! 很多 APP 的目前都支持「本机号码一键登录」功能.本机号码一键登录是基于运营商独有网关认证能力推出的账号认证产品.用户只需一键授权,即可实现以本机号码注册/登录,相比 ...
- 阿里云分析性数据库的发展历史
详细内容请点击: 阿里云分析型数据库使用教程 (分析型数据库(AnalyticDB),是阿里巴巴自主研发的海量数据实时高并发在线分析(Realtime OLAP)云计算服务,使得您可以在毫秒级针对千亿 ...
- DEAP:使用生理信号进行情绪分析的数据库(二、实验设计与主观分析)
来源CSDN网友HaZyiCe的授权分享 在此非常感谢HaZyiCe! 本篇文章是关于用于情绪分析的生理信号数据库DEAP简介的第二部分:实验设计与主观分析,用于情绪分析的生理信号数据库DEAP简介内 ...
- oracle23290,详细介绍Oracle数据库EM Console重建过程
详细介绍Oracle数据库EM Console重建过程 本文详细介绍了Oracle数据库中EM Console重建的一些知识以及重建时的错误分析与解决,希望能够对您有所帮助. Oracle数据库操作中 ...
- DownloadProvider 源码详细分析
DownloadProvider 简介 DownloadProvider 是Android提供的DownloadManager的增强版,亮点是支持断点下载,提供了"开始下载",&q ...
最新文章
- Android 本地css引用
- r语言quantmond_GitHub - QUANTAXIS/quant
- WPF实现用户头像裁剪
- set trans 必须是事务处理的第一个语句_MySQL中特别实用的几种SQL语句送给大家
- php 嵌入手机百度地图,C# 程序中嵌入百度地图
- 帮助 Medium 阅读时间达到 2600 年的技术栈
- Selenium Automated test 's Installation environment
- 常用的限流框架都在这里了!
- dp-整数划分问题(理论分析)
- php图片反色特效,PHP实现对图片的反色处理功能【测试可用】
- 对经太空搭载的“神舟三号口服液”口服液的生产菌株进行了科学鉴定.^
- 云音乐计算机等科目英文,音乐英文术语
- 冲向2021 荣耀“无限”创新
- Dubbo之Adaptive注解用法
- 2021美国大学生数学建模竞赛C题翻译版
- fleck 客户端_Fleck - 又一个灵感之源 #iPhone
- 在单个虚拟机中搭建DPDK测试环境
- 零知识证明安全实现经验
- node.js-day04
- 微信JS-SDK实现自定义分享功能,分享给朋友,分享到朋友圈