首页 理论教育分布式数据库技术:集中式DBMS中的视图

分布式数据库技术:集中式DBMS中的视图

【摘要】:在上下文中,视图是一个从基关系导出的关系,实施方式是将其作为一个查询的结果。目前,实际系统在通过视图执行更新操作方面的限制都很大。这样,排除了在通过连接、聚集等生成的视图上实施更新的可能。然而,理论上可以支持更新的视图集合应大得多。

在上下文中,视图是一个从基关系导出的关系,实施方式是将其作为一个查询的结果。

假设有一个关系Car用于描述全国已登记小型汽车的基本信息,如下:

Car(车牌号,类别,型号,车架号,发动机号,车主)按应用需要,可以创建一个视图,用于存放沪籍车(在上海登记的车辆,其车牌首字为“沪”)的信息,其对应的SQL语句如下:

Create View Shanghai_Car As

Select车牌号,类别,型号,车架号,发动机号,车主

f rom Car

where车牌号l ike'沪%'

这个定义实施后的唯一结果是在目录(数据字典)中放入了视图的定义。除此之外,无需记录任何其他信息。因此,并不产生定义这个视图的查询结果。但是,这个视图可以如同一个基关系那样被操纵。例如,可以查询沪籍车的数目,相应的SQL语句如下:

Select sum(车牌号)

f rom Shanghai_Car(www.chuimin.cn)

假设有一个关系personal(pid,name,address)用于记录居民信息,若要求找出家住“上海市南京东路1000号”的车主的车辆信息,则SQL语句如下:

Select车牌号,类别,型号,车架号,发动机号

f rom Shanghai_Car,per sona l

where Shanghai_Car.车主=per sona l.name AND add ress="上海市南京东路1000号"

可以使用任意复杂的关系查询(如选择、投影、连接、聚集函数等)来定义视图。所有视图可以像基关系一样被询问,但是不一定能完全像基关系那样被操纵。

如果视图的更新操作可以正确地传递到基关系,则该操作可以自动执行。所以,可以把视图区分为可更新与不可更新两种。若视图是可更新的,则仅当该视图的更新可以确切地(无异议地)传递到基关系。

目前,实际系统在通过视图执行更新操作方面的限制都很大。在仅当视图从基关系借助选择和投影定义的情况下,该视图才允许实施更新。这样,排除了在通过连接、聚集等生成的视图上实施更新的可能。然而,理论上可以支持更新的视图集合应大得多。

注意,通过连接生成的视图可更新的条件是,视图中必须包含基关系的键。