数据库模式与视图
数据库模式
三级模式
用户从三个层次来管理数据:外部层次(External Level)、概念层次(Conceptual Level)和内部层次(Internal Level)。其中外部层次的数据就是用户所看到的数据,所以又叫用户层次。概念层次的数据是DBMS中全局管理数据和数据之间的约束,所以又叫逻辑层次。内部层次的数据是存储在介质上的数据,包括存储路径、存储方式、索引方式等,所以又叫物理层次。
内模式
又称物理模式,是数据存储方式和物理结构在数据库内部的组织方式。如记录存储方式是堆存储,还是按照某些属性值升降序存储,还是按章属性值聚簇存储。索引的组织方式,是B+树索引还是hash索引或其他等等。
- 一个数据库只能有一个内模式,因为一个数据库对应的存储方式、路径只能有一个。
模式
也称为逻辑模式或概念模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。实际应用中模式等同于程序员创建一个具体的数据库的全部操作,如:这是一个MySQL数据库,有两张表,每个表的名字,属性的名字、类型、取值范围,主键、外键、索引等。
- 一个数据库只有一个模式,因为模式是DBMS对所有数据的全局性的结构描述,所以只能有一种形式,如不使用两张不同结构的学生表存放的都是所有学生的信息。
- 定义模式时不仅要定义数据的逻辑结构(如类型、名字等),而且要定义与数据有关的安全性、完整性要求,定义这些数据之间的联系
外模式
以视图的形式展示给用户,是保证数据库安全性的有力措施。是数据库的数据视图。
- 一个数据库可有多个外模式,如不同用户可以对同一份数据的所需数据可能不同或用户的权限不同等。
使用概述
数据库产品中的schema并不对应三级模式中的模式,如postgre中的模式可以看作是一个表的集合,其可以包含视图、索引、数据类型、函数和操作符等。以下的话是针对类似postgre的模式的。
一个数据库可以有多个模式
一个模式下可以有多个表
表必须被放在模式中,一般默认放在public模式中
用户有自己的默认模式
可通过create schema创建模式
模式访问:数据库.模式名
数据库视图
数据库视图是用户可以看见的虚关系,是从一个或几个表导出的虚表。数据库中只存放视图的定义(位于数据字典中),不存放视图对应的数据(数据位于其他表中),也称为动态窗口。
视图也可以增删改查,但可能会有一定的限制。如加上check option的视图就要满足相应条件才能update,有两个基本表导出的视图不能更新,来自字段表达式(函数)或常数的视图不允许插入和修改,但可以删除。
视图为数据库重构提供了一定的逻辑独立性,即用户->视图->表,这样如果表结构更改了可能也不用大规模修改。