学数据库有什么用,为什么需要数据库?

营销圈公众号引导关注

信息系统

现在需要开发一套信息系统, 记录系里的学生、课程、 还有选课信息。比如

  • 学生信息:[学号,姓名,性别,身份证号,入学日期,班级]
  • 课程信息:[课程号,课程名,授课老师]
  • 选课:[学号,课程号,成绩]

可以使用三个独立的文本文件来存储这些信息,比如学生信息:

学数据库有什么用,为什么需要数据库?

然后程序只需要读写这三个文件就可以了。

中间层的引入

到了期末,各个老师希望能进行一些统计的工作,比如哪些人不及格,某学科的平均分等等。实际上就是对文件进行查询而已。如果每次都使用程序来进行操作,非常麻烦,而且不利于普及。

所以我们可以提供一个中间层,把文件层屏蔽掉,让每个人都可以在这个中间层用简单的方法进行查询。我们把数据存放的结构叫表,每一列叫列、字段、属性。

可以使用简单的SQL语句就能查询

SELECT 学号,姓名 
FROM 学生信息 
WHERE 入学日期='1991-9-1'

然后需要一个解析器,可以把语句转换为内部对文件的操作。这样还可以使用程序来调用抽象层来编程啊, 也不用直接操作文件了

使用这样的SQL语句最大的好处是用户完全不用考虑物理层的那些文件的结构,只需要关注逻辑层的“表”就可以了。

学数据库有什么用,为什么需要数据库?

中间的逻辑层的另外的好处是可以对物理层的文件存储进行优化了, 为了加快访问速度, 可以增加了索引、B+树,缓存等手段。

总结起来,中间层的好处在于:

  • 对用户屏蔽了底层逻辑,只需要通过SQL语句就可以进行操作了。
  • 还可以对物理层的文件存储进行优化,加快访问速度。

并发访问

之前的访问都是单机版的,但是如果有若干的客户端连入呢?可能会存在

  • 两个客户端同时对一个文件进行修改,所以后修改的会完全覆盖前人的修改。
  • 两个客户端同时对一行数据进行修改,会出现数据不一致。

那么怎么办呢?

  • 基于文件的操作改变成基于行的操作, 每个人的修改只影响这一行。 这样纵然两个人同时修改一个文件,只要不在同一行都没毛病。
  • 修改某行数据的时候,要先给这一行加锁。也就是一个人修改的时候,不允许另一个人修改。

原子性问题

现在我们已经解决了并发写的带来的数据不一致的问题,那么还有没有其他的风险点呢?系统故障。

比如电子系有1000元, 数学系有2000元

电子系给数学系转账200元, 系统先扣除了电子系的钱,现在余额只有800 ,此时系统崩溃了。

重启以后,就发现电子系的余额是对的, 可是数学系还是2000元, 那200元丢了

所以转账的操作必须是原子的: 要么全部发生, 要么根本不发生。

可以把类似转账这样的操作叫做“事务”, 但是怎么实现呢?记录日志 

在做真正的操作之前,

  • 先记录日志:要修改哪一项,原来的值是什么,现在的值是什么
  • 然后再修改
  • 只有所有的操作都正确无误写入了磁盘,才会提交。否则就回滚

权限管理

一个没有权限控制的系统是非常危险的, 尤其是随意删除。

先定义三大类权限:

  1. 数据操作的, 例如SELECT, UPDATE, INSERT等
  2. 结构操作的, 例如创建表,修改表,等
  3. 管理的, 例如备份数据, 创建用户等

然后就可以把这些权限授予某个用户了

GRANT SELECT on 财务表 to 系主任 #只能查询。
GRANT CREATE_TABLE to 张老师:#可以创建表格

这个系统的中间层完全可以剥离出来,形成一个完整的软件了,也就是数据库

好了,这篇文章的内容营销圈就和大家分享到这里,如果大家对网络推广引流和网络创业项目感兴趣,可以添加微信:Sum8338 备注:营销圈引流学习,我拉你进直播课程学习群,每周135晚上都是有实战的推广引流技术和网络创业项目课程分享,当然是免费学!

版权声明:本站部分文章来源互联网用户自发投稿,主要目的在于分享信息,版权归原作者所有,不承担相关法律责任。如有侵权请联系我们反馈邮箱yingxiaoo@foxmail.com,我们将在7个工作日内进行处理,如若转载,请注明本文地址:https://www.yingxiaoo.com/173187.html