知识卡片

物理数据独立性

普通读书笔记卡

内容

物理数据独立性是[[模型与实现的区分及连接很慢为何没有意义]]带来的第二个重要推论: 既然物理访问方式属于实现层,与逻辑模型层是分离的,那么就可以出于性能等原因改变 底层的物理访问方式(比如换一种索引结构、改变存储编码),而不需要用户观察数据的 方式发生任何变化——用户写的查询、看到的关系结构完全不受影响。这层独立性保护的是 实实在在的投资:过去在培训、应用程序开发、逻辑数据库设计上投入的成本,不会因为 底层存储实现的调整而作废。这也解释了为什么索引这类物理访问路径”应当”对用户隐藏、 “应当”被排除在SQL语言之外——SQL标准本身并不违反这条原则,但一些具体厂商的产品 会通过暴露厂商专有扩展(如显式操作索引或行ID的语法)而违反它,书中建议在使用这类 扩展前要清楚自己在做什么,并对这种违反关系模型纯粹性的做法保持警觉。

参考来源

- 位置:《SQL与关系数据库理论——如何编写健壮的SQL代码》第1章"做好准备"1.5节 "模型vs.实现"(源文件:OEBPS/text00011.html) - 结论依据:原文明确"由于这种分离,我们能够改变物理存取方法(通常是出于性能方面的 原因),且不要求改变用户观察数据的方式——这就是所谓的物理数据独立性……索引(以及 任何物理存取路径)都属于实现问题,不属于模型问题,因此原则上应该向用户隐藏,且 应该完全排除在SQL之外"。 - 原始内容:由于这种分离,我们能够改变物理存取方法(通常是出于性能方面的原因), 且不要求改变用户观察数据的方式,这就是所谓的物理数据独立性(physical data independence)……索引应该向用户隐藏,且应该完全排除在SQL之外。