1
数据库原理与应用技术
1.5.5.3 4.5.3 设计用户子模式
4.5.3 设计用户子模式

定义数据库模式主要是从系统的时间效率、空间效率、易维护等角度出发的。用户子模式也就是用户模式或外模式。外模式来自逻辑模式,并且往往与逻辑模式是同一数据模型。定义用户外模式时更应该注重考虑用户的习惯与方便。

在关系数据库管理系统中,一般提供视图功能来虚拟定义用户所希望看到的表。那么一部分与用户相关的基表,加上按需定义的视图,就构成了一个用户的外模式。

在设计用户子模式时,要注意以下三个方面。

(1) 使用更符合用户习惯的别名。合并各局部E-R图时做了消除命名冲突的工作,使数据库系统中同一关系和属性具有唯一的名字。这在设计数据库整体结构时是非常必要的。但对于某些局部应用,改用了不符合用户习惯的属性名,可能会使他们感到不方便,因此在设计用户的子模式时可以重新定义某些属性名,以使其与用户习惯一致。当然,为了应用的规范化,也不应该一味地遵从用户的习惯。例如,负责学籍管理的用户习惯于称教师模式的职工号为教师编号。因此可以定义视图,在视图中将职工号重定义为教师编号。

(2) 针对不同级别的用户定义不同的外模式,以满足系统对安全性的要求。例如,教师实体中包括职工号、姓名、性别、出生日期、婚姻状况、学历、学位、政治面貌、职称、职务、工资、工龄、教学效果等属性。

如果在一个系统中有以下几项功能:

①学籍管理应用只能查询教师的职工号、姓名、性别、职称;

②课程管理应用只能查询教师的职工号、姓名、性别、学历、学位、职称、教学效果;

③教师管理应用可以查询教师的全部数据。

那么对于不同的系统功能,要设计不同的用户子模式来保证数据的安全性。综合起来,两种外模式的定义如下:

教师_学籍管理(职工号,姓名,性别,职称)

教师_课程管理(工号,姓名,性别,学历,学位,职称,教学效果)

同时授权学籍管理应用只能访问教师_学籍管理视图,授权课程管理应用只能访问教师_课程管理视图,授权教师管理应用能访问教师表。这样就可以防止用户非法访问本来不允许其查询的数据,保证了系统的安全性。

例如,现有一种关系模式产品(产品号,产品名,规格,单价,生产车间,生产负责人,产品成本,产品合格率,质量等级),根据系统中顾客、销售员、领导对产品数据的不同要求,可以在产品关系上建立两个视图:为一般顾客建立视图,即产品1(产品号,产品名,规格,单价),顾客视图中只包含允许顾客查询的属性;为产品销售部门建立视图,即产品2(产品号,产品名,规格,单价,车间,生产负责人),销售部门视图中只包含允许销售部门查询的属性。

同时授权顾客只能查询顾客视图,销售员只能查询销售部门视图,生产领导部门则可以查询全部产品数据。这样就可以防止用户非法访问不允许其查询的数据,保证了系统的安全性。

(3) 简化用户对系统的使用。如果某些局部应用中经常要使用某些很复杂的查询,为了方便用户,可以将这些复杂查询定义为视图。