看了很多关于国内外数据库的学习视频,一直想梳理自己关于数据库方面的知识,但是没有时间,最近应聘携程校招提前批数据库工程师,想着边写自己所学的知识边梳理自己关于数据库的想法,可能会有一些错误,希望能有大牛发现并指正我。
P.S. 本系列将会很少用到专业解释或者官方解释,是一本简书,是我的个人理解,如果想看官方解释,可以查百科哈。
本系列将会从国内《数据库系统概论》-王珊 这本书出发,详细讲解国内和国外数据库的知识点
学习数据库,那么首先要知道数据库是什么,
个人觉得数据库很像古代当铺的账本,记录着关于某年某月某日某某某当了一件什么样的物品,
这句话可以看作是一条查询语句(SELECT)。
有一天一个人写着这本账本忽然嗝屁了,那么要如何让这本账本还能继续工作呢?这就涉及到了数据库的恢复,可以用ARIES算法,当然也有其他好的恢复办法。这些我们后面慢慢交流。
上面这些是为了让看这篇文章的你对数据库产生一定的兴趣。接下来我们进入正式的学习
首先我们要非常官方的(引用前人深奥的话)介绍数据库的三级模式,三级模式如果看不懂没有关系,等学习到增删查改的时候再回头看就会非常简单。
我们要知道为什么会有三级模式?
这个如同我上面所提到的账本,账本这东西非常的隐私,不能随意让人看,并且格式有要求,也不能随便找个人来书写账本,那么为了保证这些事情,数据库设计就尤为重要了。
引入一个知识点 :DBMS 、DBS 和DB之间的关系
DBMS :数据库管理系统。
DBS:数据库系统
DB:数据库
从小到大进行解释:
DB数据库,这就是我们日常生活能接触到的,假设说携程可能用来Mysql来存放他们的数据,再假设王者荣耀用SQLite来存放魔女斗篷的法抗值,李白初始物理攻击等等。那么,Mysql和SQLite这些能存放数据的库就是我们所说的DB数据库
DBS数据库系统,这个概念其实就是DB+DBA(数据库管理员)+软件,通俗且不负责任的解释就是假如有一天你当上了腾讯的数据库工程师,你突然想入狱,去修改了王者荣耀中魔女斗篷的法抗,改成2个亿,那么狱警觉得你就是DBS。
DBMS 数据库管理系统,这个概念其实特别大,就不能用某个游戏来举例,这个概念提到便是大型集群数据库,例如说你现在有100本账本需要管理,那么你就需要找一个有100只手的人来帮助你管理这100本,其他人呢只能通过你找的这个100只手的人来看账本中的某一条数据。它对账本进行统一的管理和控制,以保证账本的安全性和完整性。
解释完上面,接下来回到三级模式
三级模式对应着外模式,模式(概念模式) 内模式
外模式(视图):这本简单解释下视图概念,视图是存放在数据库的表,组成的一道菜,这道菜由厨师(数据库设计人员)做出的,吃的人(查看视图的人)只知道这是青菜(某一字段),这是猪肉(某一字段),而并不知道厨师还有给自己偷留的黄瓜(某一字段)。
那么对于外模式来说,他就是给数据库使用人(用户)所查看的,吃客(用户)毁了厨师的菜,并不会毁了厨房内的菜。这是为了安全。视图可以有多个,代表外模式也可以有多个。
模式(基本表):数据库全体数据的逻辑结构和特征的描述,所有用户的公共数据视图,这是规定厨房内要存放什么样的食材,例如生产日期,规格啥样,并且厨房(数据库)只有一个模式。
为什么基本表有很多个但是模式只有一个,这里的基本表并不是指你创建的表,而是本身存放在数据库的基本表,它们构成了一套逻辑结构来代表模式。
内模式(存储文件):大家看这篇文章可能使用电脑或手机,电脑有磁盘或固态,手机有存储卡,这些就是内模式所对应的硬件,内模式还规定了文件怎么存储,数据存贮都是二进制也就是一堆01010110这样形式,那么如何才有更加有效呢,用B+树还是哈希存储呢,这些也都是由内模式决定的。同样内模式只有一个,这边可以理解为你的电脑存储空间只有一个,那么你的内模式也就只能有一个。
数据库的二级映象
引入知识点:映象,这是一种对应规则,说明映象双方如何进行转换。有一丢丢像我们初中高中学的映射。
1.外模式/模式映象
首先我们要知道这是定义在外模式描述中
官方的概念是:把描述局部逻辑结构的外模式与描述全局逻辑结构的模式联系起来,保证逻辑独立性。当模式改变时,只要对外模式/模式映象做相应的改变,使外模式保持不变,则以外模式为依据的应用程序不受影响,从而保证了数据与程序之间的逻辑独立性,也就是数据的逻辑独立性。
个人理解是,我创建了一张表,有年龄这一字段,是int类型,我更改了类型为str类型,没有报错,那么对于我在这张表上之前输入的数据,不会改变,视图也不会改变
模式/内模式映象
首先我们要知道这是定义在模式描述中
官方概念:把描述全局逻辑结构的模式与描述物理结构的内模式联系起来,保证物理独立性。当内模式改变时,比如存储设备或存储方式有所改变,只要模式/内模式映象做相应的改变,使模式保持不变,则应用程式保持不变。
官方概念比较清晰,如有疑问可以在评论区和我讨论。
第一篇到此为止,第二篇应该9月初能写完,第二篇我目前的计划是将概念模型的ER图EER图着重介绍。