我理解的数据库系统的三级模式与两层映像

一个数据系统包含了很多部分。作为一个系统,不同的用户看到的信息也是不一样的。

比如一个学校,虽然最终数据都在一个数据库系统中,但是教师、学生、财务、院长能看到的内容、能进入的系统也是不一样的。一个航空公司,客服、财务、用户能看到的内容也是不一样的。

模式(Schema)是对数据库中数据所进行的一种结构性的描述,是观察的数据的结构信息。比如,学生抽象为(学号,姓名,性别,系别,年龄,籍贯),而不涉及具体的值如张三或者李四的详细记录值。模式的一个具体值称为模式的一个实例(instance),如张三的记录(1111222,张三,男,计算机系,19,北京市),实例那就是数据库的一个快照snapshot。
数据库系统的三级模式结构和两层映像可以将数据库恰当的切分开来,不同权限的用户看到的内容不同,而设计者和开发者则需要从全局角度进行理解和管理,另外数据的最后存储和运维也是需要考虑的。

这里需要借用下哈工大的课件上的图

三级模式:


External Schema,外模式或者用户模式,即用户(包括应用程序员和最终用户)所能看到和处理的局部数据的逻辑结构和特征描述。重点是能看到。外模式通常是逻辑模式的子集,一个数据库可以由很多个外模式。例如图中学籍管理员只能看到学生注册、课程登记和成绩登记相关的数据,而收发人员可以看到收发管理相关的数据,看不到其他的数据。因此,外模式是保证数据库安全性的有力措施。
Conceptual Schema,概念模式或者逻辑模式,是从全局角度理解、管理的数据的结构描述,还包含了相应的关联约束。它是数据库系统模式结构的中间层,即不涉及数据的物理存储细节和硬件环境,也与具体的应用程序、所使用的的应用开发工具及高级程序语言无关。即,不管你要安装在浪潮服务器还是云上,操作系统使用CentOS或者Suse,应用程序是手机APP还是Web,使用Java还是Python ,与这个逻辑整体无关。
Internal Schema,内模式或存储模式,是数据物理结构和存储方式的描述,包含存储路径、存储方式、索引方式等。一个数据库只有一个内模式。例如,数据存储在磁盘还是主存储器,存储方式是堆存储还是按照某些属性升(降)序排列,或者按照属性值聚簇存储,是否压缩,如何加密存储等,数据存储记录定长还是变长等。
假设我们高数考了99分(多一分怕你骄傲),然后教师和你都能在学校网站查询到这个成绩(外模式),实际呢这个成绩是在一个提前定义好的成绩表里面的(概念模式),然后这个表的数据实际存储在逸夫楼的一层机房的第一个机架的一台X86服务器的磁盘(内模式)里。


两层映像:


E-C Mapping:从外模式映射为概念模式,从而实现数据概念视图向外部视图的转换。便于用户的观察和使用。这里要尽量避免因为其中一种模式的变化引起另外一个变化。
C-I Mapping:将概念模式映射为内模式,从而实现数据概念视图向内部视图的转换,从而便于计算机进行存储和处理。
这样,当概念模式发生变化时,可以不改变外部模式(只需改变E-C Mapping),从而无需改变应用程序。实现了数据的逻辑独立性。比如,某门课程之前没有实验课,从这学期开始实验课也算入总成绩。那我们系统页面看到的依旧是课程总成绩,表结构虽然增加了一列实验课,但是应用程序甚至都不用修改,不影响最终页面的查看。
当内部模式变化时,可以不改变概念模式(只需改变C-I Mapping) ,从而不改变外部模式。实现了数据的物理独立性。比如硬件坏了,需要换一个服务器,DBMS就会帮完成这个数据同步,不需自己重新折腾一遍。

  • 39
    点赞
  • 111
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值