《数据库系统概念》学习笔记——第一章
为啥要有数据库
其实存/操作数据用操作系统支持的文件系统就可以了,但是这样的的话用久了会有问题:
以学校、院系、老师、学生、课程的关系存储来举例
- 数据冗余和不一致:可能一个学生的基本信息既存在这个自动化学院的文件夹下也在宇航学院的文件夹下。然后学生的电话改了,且只有自动化学院下的数据改了,就diff了
- 数据访问困难:需要进行join和筛选的时候没法搞啊,除非自己写脚本去做,就很不好用
- 数据孤立:和第一点的问题类似,不同的学院维护自己的学生list,且很可能存储的格式不同,那这时候我想写代码访问多个学院的数据就很麻烦,还得适配一波
- 完整性问题:对于数据的约束得访问的代码来做,比如账户余额这个值肯定得>0,但是文件系统就只顾着存不会在意这个数是否>0。对于访问数据的开发者来说就很麻烦了得自己去约束数据去校验,而新加的约束来了之后代码还得改,很难做到约束都兼顾到了,于是就称为“完整性问题”
- 原子性问题:事务的支持
- 并发访问异常:并发写入问题
- 安全性问题:读取权限问题