数据库的三层模式、两种映射、事务处理是什么意思。

几天前,我在整理我的旧电脑时,发现了一个用过的 USB 闪存驱动器,上面有数据库备份。
大约一年前开发了一个使用 MySQL 的小型旅行预订系统。
当时我确实思考过三级图表结构的概念。
外部布局是前端网页的显示方式,内部布局是文件的保存方式。
中间的概念模型看起来就是表结构的设计。
等等,不,这个模式似乎还有其他的东西。

事务处理非常有趣。
我记得我正在编写票务逻辑并使用 SAVEPOINT。
我担心如果某个环节出了问题,之前订的票就会丢失。
如果 SQL 语句链接在一起,它们要么成功,要么被取消。
它由数据库管理系统 (DBMS) 精心管理。
与手动操作不同,如果不小心,数据就会被损坏。
即使系统崩溃并重新启动,也可以将其恢复到事务开始之前的状态。
这是非常令人印象深刻的。
但是,如果有一个语句执行时间特别长,比如上传一个大文件,而同时断电了怎么办?数据库恢复机制可以覆盖这种情况吗?

什么是数据库的三级模式和两级映像?

哎呀,你的描述看起来很标准。
三层架构和两层数据库镜像划分如下:
1 .概念模式:说白了,它是整个数据库的结构,它告诉你数据是什么样子以及如何关联它,但它实际存在于哪里并不重要。
就像城市地图一样,标记了街道名称和地标,但没有指定每个建筑物位于哪条街道上。

2 外部架构:这适用于使用数据库的人。
选择并绘制您需要的零件。
例如,如果销售经理只需要查看销售情况,则外部模型将仅向他提供此数据视图。
不同的人可能会有不同的看法,但都是基于概念模型的。

3 内部模式:这是数据库本身的内部存储方法,与磁盘交互。
关于如何放置索引、如何组织数据块、物理地址的细节都在这里。
您直接管理外部模式,数据库系统管理内部模式本身。

两级图像是连接这些的桥梁:
图像外部模式/概念模式:确定相同的概念模式,对于外部模式的不同用户来说可能会出现不同的情况。
就像同一栋楼,从外面看像公寓,但从里面看却像套房。
概念模式/内部模式映像:这是最关键的,因为它决定了概念层的逻辑结构如何转化为物理存储。
这就是聚集索引的用武之地。
它不会更改数据本身,但会更改数据在硬盘驱动器上的存储顺序,从而更快地搜索特定列。
这直接改变了内部模式,例如通过按“客户 ID”对给定表的所有数据块进行排序。

所以当你说聚集索引改变了内部模式时你是对的。
事实上,它与映射的内部模式/概念模式层密切相关,因为它是定义数据物理存储结构的一种方式。

无论如何,看看这个解释。
是不是清楚多了?

数据库的二级映像是指哪两个方面?

抱歉,这个数据库的二次成像技术看起来相当先进。
其实说白了,就是数据库中的一种映射机制,保证数据结构的改变不会影响外部使用。

想一想,就像我们换了手机壳一样,手机还是原来的手机,只是外观变了。
在数据库中,模式是手机本身,内部模式是手机内部的电路和结构,外部模式是手机外壳,也就是用户直接接触到的部分。

以前,当我第一次了解这些东西时,我真的很困惑。
在当时的项目期间,数据库架构发生了更改。
当时我不明白如何操作这个辅助镜像。
后来我了解到图表/插图图像是固定的,只能有一张图像。
因此,当内部schema发生变化时,例如修改数据库存储结构,DBA必须手动修改镜像以保证schema保持不变。

这类似于改变手机外壳的颜色,但手机本身的功能和结构保持不变,用户仍然使用同样熟悉的操作。
外部模式,即手机壳,可以有多种外部模式,每种外部模式对应于用户的视角。
这意味着同一个数据库可以向不同的用户显示不同的数据视图。

例如,对于一个电子商务网站,同一个数据库可能包含多个外部架构,一个供商家查看库存,一个供客户查看产品,一个供后端经理查看数据统计。
当数据库架构发生变化时,例如产品分类结构修改,管理员只需修改对应的图片即可。
商家和顾客看到的界面不需要改变,应用程序也不需要修改。

这样就保证了数据的物理独立性。
数据库结构的改变不会影响使用;它还确保了逻辑独立性。
只要外部模式不发生变化,应用程序就可以继续运行,而不必每次数据库结构发生变化时都修改程序。

归根结底,这种二次可视化技术类似于编译器,将数据库内部复杂的结构转换成更易于用户理解和使用的形式。