数据库设计-关于数据库的视图

数据库设计-关于数据库的视图

泛泛之交 发布于 2017-09-12 字数 276 浏览 1405 回复 1

在对视图进行查询的时候,RDBMS会进行有效检查,然后进行视图消解,一般情况下,视图查询的转换是直接了当的,但有些情况下会出问题。问题如下:
1.什么情况下会出问题?
2.为什么大部分的数据库系统对行列子集视图查询均能正确的转换,而对于非行列子集视图的查询却是不一定呢?

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

虐人心 2017-09-14 1 楼

说下我对视图中行列子集视图和非行列子集视图的理解。
1. 所谓视图的消解其实就是将对视图的查询转换为对基本表的查询的过程。这种转换之所以会出现问题应该是在转换为基本表的时候处理失误所致,如你问题中所说,对于非行列子集视图出现问题的概率会比较高。

举个例子可以看得更明白些:

SELECT Sno,AVG(Grade)
FROM SC
GROUP BY Sno
HAVING AVG(Grade)>=90;

这个视图中,AVG(Grade)是个计算出来的值,没办法直接对应于基本表中的某个字段。这个例子就是所谓的非行列子集视图。
2. 解释一下行列子集视图:若一个视图是从单个基本表中导出的,并且只是去掉了基本表中的某些行或某些列,但保留了码,则这类视图为行列子集视图。因此非行列子集视图的例子也就很容易理解了。