数据库系统结构与演变
数据库系统标准结构
DBMS管理数据的三个层次
- 用户层:某一用户能够看到与处理的数据,全局数据中的某一部分
- 逻辑层:全局角度理解/管理的数据,含相应的关联约束
- 物理层:存储在介质上的数据,含存储路径、存储方式、索引方式等
数据 与 数据的结构–模式
- 模式(Schema)
- 对数据库中的数据进行的一种结构性的描述
- 所观察到数据的结构信息
模式例:
学生登记表( 学号 char(8), 姓名 char(10), 性别 Char(2), 出生年月 datetime, 入学日期 Datetime, 家庭住址 Char(40) )
- 视图/数据
- 某一种表现形式下表现出来的数据库中的数据
- 某一种表现形式下表现出来的数据库中的数据
三级模式两层映像
三级模式(三级视图)
- 外模式
- 某一用户能够看到与处理的数据的结构描述(一个数据库可以有多个外模式)
- 概念模式(即图中的模式)
- 从全局角度理解/管理的数据的结构描述,含相应的关联约束,体现在数据之间的内在本质联系。(一个数据库只有一个模式)
- 内模式
- 存储在介质上的数据的结构描述,含存储路径、存储方式、索引方式等(一个数据库只有一个内模式)
三级模式在关系型数据库的对应实现
- 三级模式是数据库系统通常采用的结构,但这并不意味着你必须按照三级模式结构设想的那样来编程。这是因为,各种类型数据库(层次、网状、关系)和各个具体数据库对三级模式的提供的支持是不完善和不一致的。
可以看到三级模式都是DDL(Data Definition language)来定义的,那么在RDBMS中三种模式的定义都包含在可以使用的DDL语句中:
外模式(DDL中的Subschema DDL部分)
在RDBMS中就只有一个视图(View)来支持
当然视图提供的也只是一定程度的数据逻辑独立性。因为对于视图的更新是有条件的,因此当应用程序有需要修改数据的语句时,仍然不得不去操作基本表。所以如果基本表改变了,那么应用程序还是要变…模式(DDL中的Schema DDL部分)
模式就是基本表,但我觉得除了视图和索引组织方式等等之外都是>模式的范围。表、字段、索引、存储过程、触发器等等内模式(DDL中的Storage DDL部分)
内模式是存储文件,但存储文件的存储方式和结构可以被定义,这一部分能操作的情况比较少,举一个例子如MySQL中创建table并且制定使用MEMORY引擎、使用hash索引
两层映像
- E-C 映像
- 将外模式映射为概念模式,从而支持实现数据概念视图向外部视图的转换
- 便于用户观察和使用
- C-I 映像
- 将概念模式映射为内模式,从而支持实现数据概念视图向内部视图的转换
- 便于计算机进行存储和处理
两个独立性
- 逻辑数据独立性
- 当概念模式变化时,可以不改变外模式(秩序改变 E-C映像),从而无需改变应用程序
- 物理数据独立性
- 当内部模式变化时,可以不改变概念模式(秩序改变C-I映像)从而不改变外部模式
数据模型
数据模型是对模式本身结构的抽象,模式是对数据本身结构形式的抽象
数据模型分为:关系数据模型,层次数据模型,网状数据模型。