引言

考察数据库的结构可以有多种不同的层次或角度。(这里说的数据库不局限于关系型数据库)

1. 如果从DBMS角度来看,数据库通常采用三级模式结构,也就是说DBMS内部的系统结构是三级模式结构

2. 如果从数据库最终用户角度来看,数据库系统的结构可分为:单用户结构、主从式结构、分布式结构、客户/服务器、浏览器/应用服务器/数据库服务器多层结构等。这是数据库系统外部体系结构。

1. 数据库系统的模式(Schema)

数据模型中有“型”和“值”的概念,如:学生(学号,性别,班级)是“型”,而:张三(20160310001,1,3年2班)是“值”。

模式(Schema)是数据库中全体数据的逻辑结构和特征的描述,它仅仅描述型,而并不包括值。模式的值称为模式的一个实例(Instance),同一个模式可以有多个实例。

虽然实际的DBMS系统种类很多,他们支持的数据模式不尽相同,使用不同的语言,建立在不同的OS上,数据的存储结构也各不相同,但他们在体系结构上通常具有相同的特征,即采用三级模式结构提供两级影像功能

2. 三级模式

数据库的三级模式结构是指:数据库系统是由外模式、模式和内模式三级构成,如图:

1. 模式(Schema)

模式也称为:逻辑模式,它是DB中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。模式层是数据库模式结构的中间层,既不涉及到数据的物理存储细节和硬件环境,也与具体的应用程序、应用开发工具以及高级程序设计语言无关(C、C++、JAVA等)。
模式就是数据库数据在逻辑上的视图,且一个数据库只有一个模式。实际工作中,模式就等同于程序员创建一个具体的数据库的全部操作,如:这是一个MySQL数据库,有2张表,每个表的名字,属性的名字、类型、取值范围,主键,外键,索引,其他完整性约束等等。
DBMS提供模式描述语言(模式DDL)来严格地定义模式。

2. 外模式

外模式也称为:子模式(subschema)/用户模式,它是数据库用户(应用程序员、最终用户)能够看到的使用的局部数据的逻辑结构和特征的描述,是数据库的数据视图,是与某一个应用有关的数据的逻辑表示。
外模式通常是模式的子集。一个数据库可以有多个外模式。同一个外模式可以为某一用户的多个应用系统所使用,但一个应用系统只能使用一个外模式。
外模式是保证数据库安全性的一个有力措施。每个用户只能看见和访问所对应的外模式中的数据,数据库中的其余数据是不可见的。
DBMS提供子模式描述语言(子模式DDL)来严格地定义子模式。

3. 内模式

内模式也称为:存储模式(Storage schema),一个数据库只有一个内模式。它是数据库物理结构和存储方式的描述,是数据在数据库内部的表示方式。如:记录的存储方式是堆存储,还是按照某些属性值的升(降)存储,还是按照属性值聚簇(cluster)存储;索引按照什么方式组织,是B+树索引,还是hash索引等等。
DBMS提供内模式描述语言(内模式DDL/存储模式DDL)来严格定义内模式。


三级模式在关系型数据库的对应实现

  1. 三级模式是数据库系统通常采用的结构,但这并不意味着你必须按照三级模式结构设想的那样来编程。这是因为,各种类型数据库(层次、网状、关系)和各个具体数据库对三级模式的提供的支持是不完善和不一致的。
  2. 可以看到三级模式都是DDL(Data Definition language)来定义的,那么在RDBMS中三种模式的定义都包含在可以使用的DDL语句中:

    1. 外模式(DDL中的Subschema DDL部分)
      在RDBMS中就只有一个视图(View)来支持
      当然视图提供的也只是一定程度的数据逻辑独立性。因为对于视图的更新是有条件的,因此当应用程序有需要修改数据的语句时,仍然不得不去操作基本表。所以如果基本表改变了,那么应用程序还是要变…
    2. 模式(DDL中的Schema DDL部分)
      模式就是基本表,但我觉得除了视图和索引组织方式等等之外都是模式的范围。表、字段、索引、存储过程、触发器等等
    3. 内模式(DDL中的Storage DDL部分)
      内模式是存储文件,但存储文件的存储方式和结构可以被定义,这一部分能操作的情况比较少,举一个例子如MySQL中创建table并且制定使用MEMORY引擎、使用hash索引
    CREATE TABLE testhash (  fname VARCHAR(50) NOT NULL,  lname VARCHAR(50) NOT NULL,  KEY USING HASH(fname)
    ) ENGINE=MEMORY; 

3. 二级映像功能和数据的独立性

数据库的3级模式是对数据的3个抽象级别。它使得用户能够逻辑地抽象地处理数据,而不必再去关心数据在计算机中的具体表示方式与存储方式。实际上,为了能够实现在这3个抽象层次之间的联系和转换,DBMS在这三级模式之间设计了两层映像:

  • 外模式/模式映像
  • 模式/内模式映像

这两层映像保证了数据库中的数据能够具有较高的逻辑独立性和物理独立性。

1. 外模式/模式映像

由上可知:一个DB只有一个模式,但可以有多个外模式。
所以,对于每一个外模式,数据库系统都有一个外模式/模式映像,它定义了这个外模式与模式的对应关系。外模式的描述中通常包含了这些映像的定义。
当模式改变时(增加新的关系、新的属性、改变属性的数据类型等),由数据库管理员对各个外模式/模式映像作相应的改变,可以使得外模式保持不变。而又由于应用程序应该是依据外模式编写的,从而应用程序不必修改,这就保证了数据与程序的逻辑独立性。

总结:外模式/模式映像保证了当模式改变时,外模式不用变 — 逻辑独立性。

2. 模式/内模式映像

由上可知:一个DB只有一个模式,也只有一个内模式,所有模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系。
当数据库的存储结构改变时(例如选用了另一个存储结构),由数据库管理员对模式/内模式映像作出相应的改变,可以使得模式保持不变,从而应用程序也不必改变。这就保证了数据和程序的物理独立性。

总结:模式/内模式映像保证了当内模式改变时,模式不用变 — 物理独立性。


TIPS

  1. 两级映像只是在系统设计层面上,在每一个模式上保证了它底层模式(地基)的稳定性。就如描述的那样:模式变了外模式不用变,内模式变了模式不用变。
  2. 但是,一定要记住两级映像仅仅是也只能是在系统理论设计层面上的保证,如果你应用需求本身发生变化了那可能什么都需要改变。

三级模式两级映像/数据库系统结构相关推荐

  1. 数据库模式——三级模式两级映像

    转载:https://www.cnblogs.com/xiehuan-blog/p/9033481.html 数据库模式 数据库系统是数据密集型应用的核心,其体系结构受数据库运行所在的计算机系统的影响 ...

  2. [数据库]三级模式-两级映像详解

    前言 一个数据系统包含了很多部分.作为一个系统,不同的用户看到的信息也是不一样的. 比如一个学校,虽然最终数据都在一个数据库系统中,但是教师.学生.财务.院长能看到的内容.能进入的系统也是不一样的.一 ...

  3. 数据库模式(三级模式+两级映射)

    数据库模式(三级模式+两级映射)         美国国家标准协会(American National Standard Institute, ANSI)的数据库管理系统研究小组于1978年提出了标准 ...

  4. 数据库系统的三级模式两级映射

    模式:模式是数据库中全体数据的逻辑结构和特征的描述.(不涉及具体的值) 例如: 学生选课数据库模式: 学生(姓名,学号,专业班级) 课程(课程号,课程名,学分) 选课(学号,课程号,成绩) 注意:模式 ...

  5. 数据库结构与模式 - 三级模式 两级独立性/两级映射

    数据库技术中采用分级的方法将数据库的结构划分为多个层次.最著名的是美国 ANSI/ SPARC 数据库系统研究组 1975 年提出的三级划分法 数据库系统划分为三个抽象级:用户级.概念级.物理级. ( ...

  6. 数据库 三级模式 两层映像

    其实看完,还是没有了然于心的感觉 还是模模糊糊的===感觉还是有点没能特别理解清楚=== 先写着,以后再理解一下吧=== 网址1:http://www.cnblogs.com/kunpengit/ar ...

  7. 数据库系统结构——三级模式和两级映像

    数据库系统结构 一.数据库系统的三级模式结构:外模式.模式.内模式 名称 功能 定义和描述语言 模式(Schema)也称概念模式或逻辑模式 它是数据库总的框架,是对数据库中全体数据的逻辑结构和特性的描 ...

  8. 数据库的三级模式结构和两级映像

    数据库的三级模式结构 请先把下面的关系记在心中. 外模式(应用)->概念模式(表结构)->内模式(物理) 外模式(external schema) 也称"用户模式"或者 ...

  9. 数据库系统中的三级模式、两级映像以及数据独立性(附绪论思维导图)

    三级模式.两级映像 1.绪论思维导图 2.数据库系统的三级模式结构 2.1.模式 2.2.外模式 2.3.内模式 3.数据库的两级映像功能 3.1.外模式/模式映像 3.2.模式/内模式映像 3.3. ...

  10. 数据库的三级模式与二级映像

    在数据库中,模型是数据库中全体数据的逻辑结构和特点的描述,这种描述仅涉及"型",而不涉及"值",因此模式是相对稳定的. 而现实世界中的数据库,尽管使用的语言.存 ...

最新文章

  1. 【Spark篇】---SparkStream初始与应用
  2. OpenGL Shadow Mapping阴影贴图的实例
  3. 1-5Tomcat 目录结构 和 web项目目录结构
  4. fmax()函数以及C ++中的示例
  5. 高智商孩子14个独有的特点
  6. 伪静态php空间,Win空间上如何实现WordPress博客的完美伪静态
  7. JPG如何免费无损压缩
  8. 犀牛Rhino中Grasshopper插件中的millipede千足虫插件安装方法
  9. java 开根号_Java实现开根号运算(不使用数组和String)
  10. Python制作一个简单的图片文字提取+PDF转WORD的软件
  11. 基于RFID定位技术的智能仓储管理系统--RFID智能仓储--新导智能
  12. BZOJ4134 ljw和lzr的hack比赛
  13. 拥抱云原生,聊聊高度解耦的密码管理解法
  14. pkusc2016滚粗记
  15. 原码,反码,补码,全面解析
  16. 【微信小程序-初级实战】商品/表单编辑
  17. 仿京东放大镜效果案例
  18. 邂逅Flutter开发
  19. [从零开始学习FPGA编程-7]:快速入门篇 - 总体 - FPGA产品开发简化流程、关键步骤解读
  20. 解决navicat premium连接数据库自动断开问题

热门文章

  1. 等差数列及等比数列求和公式
  2. 应用工具推荐phpStudy(小皮面板)
  3. 全球著名编程大赛地址
  4. Ant、 Maven 、 Gradle—Java构建工具比较
  5. 大数据学习开篇:了解大数据导论、清楚大数据应用领域和前景
  6. 使用postman发送post请求,header设置问题
  7. 2017年NBA球员数据分析
  8. 一直以来伴随我的一些学习习惯(part1)
  9. spss常态检验_spss中正态性检验表怎么分析
  10. 亲民地理第39期-佛山(2)南风古灶