知识卡片
基关系与视图在关系模型中没有本质"物理"差异
内容
基关系(通过SQL的CREATE TABLE命名,对应SQL的基表)和导出关系(对基关系施加关系
表达式运算得到的结果,比如查询结果)是关系的两种来源;视图是一种特殊的、同样被
命名的导出关系,它在某个时刻的值形式化定义为某个关系表达式在该时刻的求值结果
(例如 CREATE VIEW SST_PARIS AS (SELECT SNO,STATUS FROM S WHERE CITY='Paris'))。
业界流传着一个常见但错误的说法:”基关系是被物理存储的,视图只是提供了观察基关系
的另一种方式”——书中明确把这个说法标记为”谎言”并加以反驳:关系模型对物理存储
方式根本只字未提,甚至没有要求基关系必须被物理存储,唯一的要求是从物理存储到
基关系之间存在(至少在概念上)某种映射关系;理论上完全可以只物理存储S和SP的
连接结果,再通过投影运算概念性地”导出”S和SP本身。也就是说,就关系模型而言,
基关系并不比视图更”物理化”。这个自由度是设计上刻意留出的(服务于[[物理数据
独立性]]),只是大多数SQL厂商实际上把基表相当直接地映射到物理存储,这种实践上的
巧合和SQL标准本身”表和视图”这种表述方式一起,共同强化了”基表更物理”的错误印象——
建议始终用”关系”泛指,只在真正需要区分时才说”基关系”,避免陷入”关系=基关系”或
“基关系必须被物理存储”这两个陷阱。
参考来源
- 位置:《SQL与关系数据库理论——如何编写健壮的SQL代码》第1章"做好准备"1.7节
"基关系vs.导出关系"(源文件:OEBPS/text00013.html)
- 结论依据:原文明确"警告!谎言来了!基关系是物理存储的,视图仅仅提供了观察
基关系的另一种方式……关系模型对物理存储只字未提……就关系模型而言,基关系没有
比视图更'物理化'",并给出S、SP连接结果被物理存储、S与SP反而是导出关系的
反例说明存储自由度。
- 原始内容:警告!谎言来了!……关系模型对物理存储只字未提……就关系模型而言,
基关系没有比视图更"物理化"。