发布网友 发布时间:2022-04-30 13:37
共2个回答
懂视网 时间:2022-05-02 16:42
现在需要开发一套信息系统, 记录系里的学生、课程、 还有选课信息。比如
可以使用三个独立的文本文件来存储这些信息,比如学生信息:
然后程序
只需要读写这三个文件就可以了。
到了期末,各个老师希望能进行一些统计的工作,比如哪些人不及格,某学科的平均分等等。实际上就是对文件进行查询
而已。如果每次都使用程序来进行操作,非常麻烦,而且不利于普及。
所以我们可以提供一个中间层
,把文件层屏蔽掉,让每个人都可以在这个中间层用简单的方法进行查询。我们把数据存放的结构叫表
,每一列叫列、字段、属性
。
可以使用简单的SQL语句
就能查询
SELECT 学号,姓名
FROM 学生信息
WHERE 入学日期=‘1991-9-1‘
然后需要一个解析器
,可以把语句
转换为内部对文件的操作。这样还可以使用程序来调用抽象层
来编程啊, 也不用直接操作文件了
使用这样的SQL语句
最大的好处是用户完全不用考虑物理层的那些文件的结构,只需要关注逻辑层的“表”就可以了。
中间的逻辑层的另外的好处是可以对物理层的文件存储进行优化了, 为了加快访问速度, 可以增加了索引、B+树,缓存等手段。
总结起来,中间层的好处在于:
之前的访问都是单机版的,但是如果有若干的客户端连入呢?可能会存在
那么怎么办呢?
锁
。也就是一个人修改的时候,不允许另一个人修改。现在我们已经解决了并发
写的带来的数据不一致
的问题,那么还有没有其他的风险点呢?系统故障
。
比如电子系有1000元, 数学系有2000元
电子系给数学系转账200元, 系统先扣除了电子系的钱,现在余额只有800 ,此时系统崩溃了。
重启以后,就发现电子系的余额是对的, 可是数学系还是2000元, 那200元丢了
所以转账的操作必须是原子
的: 要么全部发生, 要么根本不发生。
可以把类似转账
这样的操作叫做“事务”, 但是怎么实现呢?记录日志
在做真正的操作之前,
磁盘
,才会提交。否则就回滚
一个没有权限控制的系统是非常危险的, 尤其是随意删除。
先定义三大类权限:
然后就可以把这些权限授予某个用户了
GRANT SELECT on 财务表 to 系主任 #只能查询。
GRANT CREATE_TABLE to 张老师:#可以创建表格
这个系统的中间层完全可以剥离出来,形成一个完整的软件了,也就是数据库
小李的数据库之旅(上)
小李的数据库之旅(下)
数据库(二),数据库起源
标签:提交 物理 通过 create rect 操作 日志 存在 sele
热心网友 时间:2022-05-02 13:50
“数据库”起源于20世经90年代,当时美国为了战争的需要,把各种情报收集在一起,存储在计算机,叫做Data Base(DB).