zoukankan      html  css  js  c++  java
  • 数据库三级模式两级映像

    数据库的体系结构

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

    数据库模式

    为了保障数据与程序之间的独立性,使用户能以简单的逻辑结构操作数据而无须考虑数据的物理结构,简化应用程序的编制和程序员的负担,增强系统的可靠性。所以通常DBMS将数据库的体系结构分为三级模式。

    数据库三级模式

    数据库三级模式分别是外模式,概念模式,内模式。

    在这里插入图片描述

    外模式

    外模式也称用户模式或子模式,是用户与数据库系统的接口。也就是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。

    外模式通常是概念模式的子集。一个数据库可以用很多外模式。同一个外模式可以给某个用户的多个应用系统所使用,但一个应用系统只能使用一个外模式。

    外模式是保证数据库安全性的一个有力措施。每个用户只能看到和访问所对应的外模式中的数据,数据库中的其余数据是不可见的,这样可以屏蔽大量无关信息且有利于数据的保护。

    在一般的DBMS中都提供有相关的外模式描述语言(外模式DDL)。

    ++理解下面的文字++:
    外模式是以视图的形式展现给用户,这里的视图不是UI,而是数据库中的视图,又叫虚表,是相对于基本表而言。基本表就是我们平常在数据库中创建的那些表,而视图是对这些基本表中的数据的某种展现形式,是这些数据的一个子集,但不限于某张表的数据的子集,也可以是多张表联合起来进行显示的一组数据。比如学校的教务系统,每个学生只能看到自己的成绩,而教师可以看到学生们的成绩,辅导员可以看到系里所有学生的成绩等等。那么可以基于所有学生的成绩数据,针对不同权限的用户选取不同的子集,这个子集就是所谓的视图。注意:视图本身并不是实际存放数据,而是对于如何选取数据的一种描述,也就是虚。并且当全局数据改变时,视图中的数据也会随着改变。
    通过外模式,可以让不同用户看到他们可以看到的。

    概念模式

    概念模式也称为模式或者逻辑模式。是数据库中全体数据的逻辑结构和特性的描述,是所有用户的公共数据视图。看上图,它是在外模式和内模式之间,即不涉及数据的物理存储细节和硬件环境,也与具体的应用程序,开发工具以及高级程序设计语言无关。

    一个数据库只有一个模式。 实际工作中,模式就等同于程序员创建一个具体的数据库的全部操作。比如这是一个MySQL数据库,有n张表,每张表的名称,表中的字段,字段类型,主键等等。

    DBMS提供模式描述语言(模式DDL)来严格地定义模式。

    内模式

    内模式也称存储模式。一个数据库只有一个内模式。
    它是数据库物理结构和存储方式的描述,是数据在数据库内部的表达方式。比如:记录的存储方式是堆存储,还是按照某些属性值的升(降)存储;索引按照什么方式组织,是B+树索引,还是Hash索引等。

    DBMS提供内模式描述语言(内模式DDL/存储模式DDL)来严格定义内模式。

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

    1.三级模式是数据库系统通常采用的结构,但这并不意味着你必须按照三级模式结构设想的那样来编程。这是因为,各种类型数据库(层次、网状、关系)和各个具体数据库对三级模式的提供的支持是不完善和不一致的。

    2.三级模式都是以DDL(Data Definition Language)定义的,那么在RDBMS(关系型)中三种模式的定义都包含在可以使用的DDL语句中:

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

    两层映射

    为了能够实现在这3个抽象层次之间的联系和转换,数据库管理系统在三级模式中提供了两层映射,分别为 外模式/模式映射 和 模式/内模式映射。

    1.外模式/模式映射

    对于同一个模式可以有任意多个外模式。对于每一个外模式,数据库系统都有一个外模式/模式映射。当模式被改变时,数据库管理员对各个外模式/模式映射做相应的改变,可以使外模式保持不变。这样,依据数据外模式编写的应用程序就不用修改,保证了数据与程序的逻辑独立性。

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

    2.模式/内模式映射

    数据库中只有一个模式和一个内模式,所以模式/内模式的映射是唯一的,它定义了数据库的全局逻辑结构与存储结构之间的对应关系。当数据库的存储结构被改变时,数据库管理员对模式/内模式映射做相应的改变,可以使模式保持不变,应用程序相应地也不做变动。这样,保证了数据与程序的物理独立性。

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

    两层映射只是在系统设计层面上,在每一个模式上保证了它底层模式(地基)的稳定性。两层映射仅仅是也只能是在系统理论设计层面上的保证,如果你应用需求本身发生变化了那可能什么都需要改变。

    参考:

    刘慰

    有且仅有

    杜小白Zero

  • 相关阅读:
    java 获取json字符串中key对应的值
    location.href跳转页面时传递参数并且在新页面接收参数
    bootstrap table 合并列(只合并相邻的相同项)
    谷歌浏览器输入框清除历史输入记录
    js高德地图支持,java获取高德地图两点间的距离
    ASP.NET Excel 文件导入与导出实例
    Struts2入门---输入验证---验证身份证案例
    Struts2入门---国际化
    Struts2入门---消息处理和类型转换
    Struts2入门---增删改查- 拦截器栈的应用
  • 原文地址:https://www.cnblogs.com/flunggg/p/12184642.html
Copyright © 2011-2022 走看看