《视图更新与关系数据库理论》——1.4 视图:约束和补偿性操作
操作 更新 视图 理论 约束 1.4 关系数据库
2023-09-11 14:17:42 时间
本节书摘来自异步社区出版社《视图更新与关系数据库理论》一书中的第1章,第1.4节,作者:【美】C.J. Date(达特),更多章节内容可以访问云栖社区“异步社区”公众号查看。
现在我要开始讨论本章的核心概念。如果前面两段中所涉及的表中有一部分或者全部都是视图的话,那么我们讨论的所有结论依旧成立,没有改变。例如,像之前一样,假设S是表,LS和NLS是视图。
CREATE TABLE S ( .............. , UNIQUE ( SNO ) ) ; CREATE VIEW LS AS ( SELECT ... WHERE CITY = ‘London’ ) ; CREATE VIEW NLS AS ( SELECT ... WHERE CITY ‘London’ ) ;
现在假设用户只能看到视图LS和NLS,但是希望像基表一样操作它们。在这个用户看来,这些表的语义如下。
LS:供应商SNO是已经签约的,名称为SNAME,有状态值STATUS,位于城市CITY中(London)。
NLS:供应商SNO是已经签约的,名称为SNAME,有状态值STATUS,位于城市CITY中(非London)。
此用户将会了解有下面的约束存在(注意这些约束没有提到表S,因为用户并不知道表S的存在)。
{SNO}是LS和NLS的键。
LS中的每一行CITY值均为London,NLS没有这样的行。
供应商编号不会同时出现在LS和NLS中。
但是,该用户并不会意识到有补偿性操作的存在,因为他并不知道LS和NLS实际上是表S的视图。如前所述,该用户甚至根本不知道表S的存在,因此他也并不知道实现这些操作的约束到底是什么,以及视图LS和NLS合起来就等于表S这个事实。该用户执行的针对视图LS和NLS的更新也都会生效,在他看来就像LS和NLS都是基表一样。同样,这个用户在视图LS和NLS执行的更新在S中也会产生对应的关联效果,只是他看不到而已。
异步社区 异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
相关文章
- Win10常用优化操作 -- 持续更新中
- JDBC操作,执行数据库更新操作
- Python编程之列表操作实例详解【创建、使用、更新、删除】
- Python编程之列表操作实例详解【创建、使用、更新、删除】
- 如何对 ABAP 数据库表通过 ABAP 代码进行更新和删除操作试读版
- Atitit 锁的不同层级 app锁 vm锁 os锁 硬件锁 目录 1. 在硬件层面,CPU提供了原子操作、关中断、锁内存总线的机制1 1.1. test and set指令1 1.2. 锁内
- Atittit HDFS hadoop 大数据文件系统java使用总结 目录 1. 操作系统,进行操作1 2. Hdfs 类似nfs ftp远程分布式文件服务2 3. 启动hdfs服务start
- 零基础入门低代码后端开发,只需几行代码就可以操作数据库
- 【SpringBoot笔记28】SpringBoot集成ES数据库之操作doc文档(创建、更新、删除、查询)
- 【MyBatis笔记07】MyBatis中的批量操作(批量新增、批量删除、批量更新)
- java JXL操作Excel文件
- 〖Python 数据库开发实战 - MySQL篇㉕〗- 数据更新操作 - UPDATE 语句
- spring中自定义注解(annotation)与AOP中获取注解___使用aspectj的@Around注解实现用户操作和操作结果日志
- Oracle SQL操作计划基线总结(SQL Plan Baseline)
- 002-guava String 操作
- Spark 键值对RDD操作
- Django(21)-ORM删除操作及实例演示
- impala对元数据的界面更新操作
- 【注解汇总】操作日志记录注解