《视图更新与关系数据库理论》——1.1 可交换性原则

简介:

本节书摘来自异步社区出版社《视图更新与关系数据库理论》一书中的第1章,第1.1节,作者:【美】C.J. Date(达特),更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.1 可交换性原则

到目前为止,表S是基表,LS和NLS是视图。现在仔细观察,你会发现其实我们还可以用另一种方式来看它们,那就是把LS和NLS作为基表,而S作为视图,具体如下所示。

CREATE TABLE LS 
   ( SNO         VARCHAR(5)  NOT NULL ,
      SNAME    VARCHAR(25) NOT NULL ,
      STATUS INTEGER NOT NULL ,
      CITY         VARCHAR(20) NOT NULL ,
      UNIQUE ( SNO ) ) ;

CREATE TABLE NLS
   ( SNO VARCHAR(5) NOT NULL ,
      SNAME VARCHAR(25) NOT NULL ,
      STATUS INTEGER NOT NULL ,
      CITY VARCHAR(20) NOT NULL ,
      UNIQUE ( SNO ) ) ;

CREATE VIEW S AS
   ( SELECT SNO , SNAME , STATUS , CITY
      FROM LS
      UNION
      SELECT SNO , SNAME , STATUS , CITY
      FROM NLS ) ;

 

为了保证现在这个设计与原先的设计完全等价,我应该声明并且让数据库满足特定的完整性约束,当然其中应该包括针对CITY值的一致性约束,以保证LS中每一个CITY值都是London,NLS中CITY值都不是London。但是现在我们暂时不考虑这些细节,稍后我会对这些问题做更详细的解释。
那么现在,做出上面这个变化所要表明的内容可以概括为:对基表和视图的设定是没有限制的,是可以互换的(至少从正式的角度来看是这样)。换句话说,对于这个例子,我们至少可以用两种方式设计数据库,这两种方式逻辑上不同,但包含的信息是等价的。(这里的等价信息,是指两个设计代表了相同的信息,也就是说对于在一种设计执行的查询,一定有在逻辑上和它等价的查询可以在另一种设计上执行。第3章将详细阐述这个概念。)而“可交换性原则”就是对上面内容的总结。

定义:可交换性原则说明在基表和视图之间一定不能存在不确定的和不必要的区别。换句话说,在用户看来,视图与基表应该看起来感觉是很像的。
关于这个原则,下面几点值得注意。
正如我所阐述的,视图与基表一样,受完整性约束的限制(我们通常认为完整性约束是专门应用于基表的,但是可交换性原则证明这种想法有失偏颇)。
特别要说的是,视图是有键的(我确实应该在视图的定义中包括键的声明。但可惜的是,SQL并不允许这样声明)[2]。同时,视图也可能有外键,而外键也可能引用自视图。
很多SQL产品和SQL标准,提供了某种叫作row ID的特性(在标准中,此特性被称为REF类型和引用值)。如果这个特性只对基表有效,而对视图无效(实际上,这种情况非常有可能发生),那就明显违反了可交换性原则。
最后,也许最重要的是,我们必须能够更新视图,因为如果不能实现更新,那就等于“可交换性原则”内部自相矛盾了。

相关文章
|
2月前
|
SQL 算法 数据库
【数据库SQL server】关系数据库标准语言SQL之视图
【数据库SQL server】关系数据库标准语言SQL之视图
76 0
|
4月前
|
存储 SQL 关系型数据库
数据库设计的基本原则和主要步骤以及应注意什么?
数据库设计的基本原则和主要步骤以及应注意什么?
167 0
|
8月前
|
数据库 索引
数据库 - 索引 设计与使用 原则
数据库 - 索引 设计与使用 原则
55 0
|
4月前
|
关系型数据库 MySQL 程序员
MYSQL数据库设计规范与原则
MYSQL数据库设计规范与原则
72 0
|
9月前
|
存储 缓存 关系型数据库
MySQL数据库管理的基本原则和技巧
MySQL数据库管理的基本原则和技巧
|
7月前
|
SQL 存储 数据可视化
关系数据库之视图
关系数据库之视图
|
7月前
|
SQL 存储 安全
第3章 关系数据库标准语言SQL——3.7 视图
第3章 关系数据库标准语言SQL——3.7 视图
|
9月前
|
SQL 关系型数据库 MySQL
【数据库】MySQL 解读事务的意义及原则
【数据库】MySQL 解读事务的意义及原则
|
SQL 数据库 数据库管理
数据库和数据表 建立索引的原则
索引查询是数据库中重要的记录查询方法,要不要进入索引以及在那些字段上建立索引都要和实际数据库系统的查询要求结合来考虑,下面给出实际中的一些通用的原则:
|
关系型数据库 测试技术 分布式数据库
RDS_DRDS数据库分配原则
DRDS和RDS适用场景和存储方案选型标准:DRDS适用场景: 1、 读写分离:分散读压力,需要考虑主从复制延迟和分配机制(RDS自带读写数据库代理支持读写分离); 2、 分表分库:解决大数据量场景,分散存储和访问压力;DRDS弊端: 1、 分布式事务问题,DRDS原生事务为柔性事务非强一致事务,...
2991 0

热门文章

最新文章