数据库系统的独立性是怎样实现的

这种数据独立性看起来非常先进,类似于数据库的“隔离层”,可以保护数据免受外部更改。
之前在做数据库项目的时候也遇到过这样的问题。

2 02 3 年,我记得在一家互联网公司优化数据库。
当时公司想在用户信息表中添加“用户级别”等字段。
这个改变涉及到schema级别的改变,即将内部schema映射到schema。
我们当时使用的数据库管理系统(DBMS)非常聪明。
模式到内部模式的映射已自动调整,以便数据结构更改不会影响外部模式和应用程序。

这样开发团队就不用根据外部模式去改变程序代码了。
感觉就像您翻新了您的家,但您的家具和生活方式将保持不变,因为它们独立于您家的结构。

此外,这种数据独立性使得程序员非常容易使用。
过去,在文件系统时代,每次数据库结构发生变化,程序都要随之改变,这是一项繁琐的工作。
在数据库系统中,数据和程序就像两条平行线,独立演化,互不干扰。

也就是说,数据独立性不仅带来技术进步,还能显着提高数据处理效率、降低维护成本。
不管怎样,这取决于你,但我认为这项技术值得推广。
我仍然想知道数据库系统将来是否会变得更加智能,并且能够自动处理更多这样的结构变化的影响。

数据库的三级模式和二级映像

当我第一次知道这个的时候,我的头真的很大。

你说的是三级模式,外部模式,内部模式,内部模式。
听起来很复杂。

我们先来说一下模式,即逻辑模式和概念模式。
说白了,这个东西就是数据库数据在逻辑层上的样子。
它是全局逻辑结构。
数据库有一个模式。
这个模型是核心,特别关键,不随其他层次的变化而变化。
在设计数据库的时候,首先要确定这个逻辑模型。
DBMS有一种特殊的描述性语言,可以严格定义模式。
后来我才知道,这个模型就像一个大概的轮廓。

我们先来说说外部模式,也就是子模式和用户模式。
这是用户可以看到和使用的本地数据结构。
它是一个局部逻辑结构。
是模式的子集。
一个数据库可以有多个外部模式。
每个用户只能看到您给他的外部架构,而看不到其他数据。
这是保持安全的好方法。
同一个外来模式可以被多个程序使用,但一个程序只能使用一种外来模式。
随着应用程序需求的变化,外部模型也必须发生变化。
在设计外部模式时,必须考虑可扩展性。
DBMS 还具有语言定义的外部模式。

内部模式是存储模式。
数据库有一个内部模式。
这就是数据的物理结构和存储方式。
比如记录如何存储,索引如何组织,压缩与否,加密与否,存储结构是什么。
它依赖于全局逻辑结构,但与用户视图和存储设备无关。
它根据物理策略组织逻辑结构化数据以提高效率。
DBMS 还具有语言定义的内部模式。

然后是辅助图像。
外部模式/模式图像是定义外部模式与模式之间的关系。
如果模式改变,管理员必须改变镜像,但外部模式可以保持不变。
该应用程序基于外部模型,因此无需更改它。
这就是所谓的逻辑独立性。

模式/内部模式图像是定义逻辑结构和存储结构之间的关系。
存储结构改变,管理员改变镜像,但模式不变。
该应用程序不需要修改。
这就是所谓的身体独立。

说白了,三级模式让用户忽略物理存储,从逻辑上处理数据。
物理级数据库是基础,概念级数据库是物理库的逻辑描述,用户级数据库是概念库的子集。
用户操作基于外部模式,并通过图像和模式链接。
模式改变,形象改变,但外部模式和应用保持不变。
存储变了,图像变了,但模式和应用不变。

就是这样。