数据库系统的标准结构
数据库系统的分层抽象
DBMS管理数据的三个层次
- User Level:用户层次。某一用户能够看到、处理数据,全局数据中的某一部分;
- Logic Level:逻辑/概念层次。从全局角度理解/管理的数据。含相关的关联约束;
- Physical Level:物理层次。存储在介质上的数据,含存储路径、存储方式、索引方式。
数据(视图)与模式
模式
对数据库中数据所进行的一种结构型的描述。
以mysql为例,输入desc citizen
查看到的表结构就是模式
image-20200718203624750
视图/数据
某一种表示形式下表现出来的数据库中的数据,也就是模式的具象化
image-20200718203822444
三级模式两层映像
三级模式(三级视图)
- External Schema——(External) View:外部模式(视图)。某一用户能够看到与处理的数据的结构描述。作用于应用程序(表的抽象)。一般情况下我们说的视图就是这一层面;
- (Conceptual) Schema——Conceptual View:概念模式(视图)。从全局角度理解/管理数据的结构描述,含相应的关联约束,体现在数据之间的内在本质联系。作用于DBMS层面(表的管理)。一般情况下我们说的模式就是这一层面;
- Internal Schema——Internal VIew:内部模式(视图)。存储在介质上的数据的结构描述,含存储路径、存储方式、索引方式等。作用与数据库(表的存储)
两层映像
模式之间结构是不相同的,是无法简单关联在一起的。因此我们需要引入新的概念:映像(Mapping)
。
由上文可知,我们需要两个映像将三个模式关联起来:
-
E-C Mapping
: 将外模式映射为概念模式,从而支持实现数据概念视图向外部视图的转换,便于用户观察和使用。 -
C-I Mapping
:将概念模式映射为内模式,从而支持是实现数据概念视图向内部视图的转换,便于计算机进行存储和处理
为什么需要这么设计?
三级模式与两层映像组成了我们数据库的标准结构。用户自己定义三层视图,由DBMS帮助我们完成两层映射的实现。在实际应用中,应用程序实际上只对外部视图进行操作。
那为什么需要这么设计呢?
实际上是遵循「两个独立性」:
- 逻辑数据独立性
当概念模式变化时,可以不改变外部模式(只需要改变E-C Mapping),从而无需改变应用程序,减少耦合度。
- 物理数据独立性
当内部模式变化时,同样只需改变C-I Mapping,从而不改变概念模式,也不需要改变外部模式。
数据模型
概念
数据模型是规定模式统一描述方式的模型,包括数据结构
、操作
和约束
。模型是对模式本身的抽象,而模式是对数据的抽象。
例如:关系模型就是对「一类」数据有联系的抽象表形式的模式。关系模型中就是对模型中包含的模式做出要求:每一个具体的模式都拥有不同列名的具体的表,规定了对这类表可以进行哪些操作和约束。
三大经典数据模型
- 关系模型:表的形式组织数据;
- 层次模型:树的形式组织数据。通常用来表示两个节点(实体型)之间的联系(系型)。查询效率高,但是结构不够灵活;
- 网状模型:图的形式组织数据。多个节点之间的联系。表示现实中的关系很清晰明了,但是实现太过复杂,维护不易。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。