|
|
51CTO旗下网站
|
|
移动端

1.4 视图:约束和补偿性操作

《视图更新与关系数据库理论》本书详细介绍了数据库架构的设计和实现,同时讨论了视图更新及关系数据库理论。本节为大家介绍视图:约束和补偿性操作。

作者:田远帆 译来源:人民邮电出版社|2018-01-25 17:15

1.4 视图:约束和补偿性操作

现在我要开始讨论本章的核心概念。如果前面两段中所涉及的表中有一部分或者全部都是视图的话,那么我们讨论的所有结论依旧成立,没有改变。例如,像之前一样,假设S是表,LS和NLS是视图。

  1. CREATE TABLE S      ( .............. , UNIQUE ( SNO ) ) ;  
  2. CREATE VIEW  LS  AS ( SELECT ... WHERE CITY = ‘London’ ) ;  
  3. CREATE VIEW  NLS AS ( SELECT ... WHERE CITY <> ‘London’ ) ; 

现在假设用户只能看到视图LS和NLS,但是希望像基表一样操作它们。在这个用户看来,这些表的语义如下。

LS:供应商SNO是已经签约的,名称为SNAME,有状态值STATUS,位于城市CITY中(London)。

NLS:供应商SNO是已经签约的,名称为SNAME,有状态值STATUS,位于城市CITY中(非London)。

此用户将会了解有下面的约束存在(注意这些约束没有提到表S,因为用户并不知道表S的存在)。

{SNO}是LS和NLS的键。

LS中的每一行CITY值均为London,NLS没有这样的行。

供应商编号不会同时出现在LS和NLS中。

但是,该用户并不会意识到有补偿性操作的存在,因为他并不知道LS和NLS实际上是表S的视图。如前所述,该用户甚至根本不知道表S的存在,因此他也并不知道实现这些操作的约束到底是什么,以及视图LS和NLS合起来就等于表S这个事实。该用户执行的针对视图LS和NLS的更新也都会生效,在他看来就像LS和NLS都是基表一样。同样,这个用户在视图LS和NLS执行的更新在S中也会产生对应的关联效果,只是他看不到而已。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

大道至简:软件工程实践者的思想

本书是在“思想方法学”这一软件工程尚未涉足过的领域中的实习之作。作者亲历国内软件工程的英雄时代、泡沫时代,从失败中醒觉而创建独特的...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊