|
|
|
|
移动端

1.5 规则至上

《视图更新与关系数据库理论》本书详细介绍了数据库架构的设计和实现,同时讨论了视图更新及关系数据库理论。本节为大家介绍规则至上。

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

技术沙龙 | 6月30日与多位专家探讨技术高速发展下如何应对运维新挑战!


1.5 规则至上

现在我们假设用户只能看到视图LS(而不是视图NLS和基表S)。可以想见这个用户仍然希望可以将视图LS当作基表一样操作。当然,这个用户知道表的语义。

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

并且了解如下约束。

{SNO}是LS的键。

LS中的每一行CITY值为London。

很明显,这个用户无法向这个表插入新行,也不能更新表中的供应商编码,因为这样的操作很可能违反约束规则,而用户并不知道这些约束(必须不知道)[7]。但是如果LS是一个基表,那么用户完全可以插入新行。否则,这张表将永远是空的!那么,前面所说的事情不就违背“可交换性原则”了吗?

事实并非如此。尽管这个特定的用户不被允许向这个表插入新行,但并不是所有用户都不可以。这个用户不能插入新行到LS的基本原因是他只是管中窥豹,无法看到全局。对比来看,我们在上一部分所讲的用户可以同时看到LS和NLS,它们合起来等价于表S,因此该用户相当于能够看到全局,也由此他就可以向LS(和/或是NLS)插入新行。但是只能看到LS的用户等于只能看到一部分信息,所以一些特定操作是不允许他执行的。

最后,值得指出的是即便我们遇到的数据格式都是基表,用户也会遇到类似的情况。也就是说,即使涉及的表都是基表,有时某些用户也会被禁止在某些特定的表上执行某些特定的更新。举个例子,让我们想想只能看到基表SP,但是看不到基表S的用户。他会和只能看到表LS的用户一样,无法执行插入操作,因为这样的操作同样可能违反用户并不知道的(必须不知道)约束规则,这个约束就是从SP到表S和P的外键约束。


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

51CTO读书频道二维码


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

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

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

读 书 +更多

Fedora Core 5 Linux系统安装与管理

以Linux为代表的自由软件及其稳定性,逐渐在全世界崭露头角且备受重视。由于可以支持多种网络环境,因此在采用Linux系统之前,必须熟悉各种...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊