这个谜底是给你的。 或许我是只见树木, 不见森林, 但是如果想以一种不会导致无数循环引用的优雅方式来解决问题这个问题, 似乎并不容易。
这个谜底似乎是一个关于完整的系统, 但我的问题是: 是否存在一个方法, 在表设计阶段消除明显的循环引用。
你必须记录一个组织中的投资问题, 以备查找、检索。 这个投资组合有很多附加属性, 这里只列出一些与此谜题相关的属性:
create table Portfolios
(
file_id integer not null primary key,
issue_date date not null,
superseded_file_id integer not null references Portfolios(file_id),
supersedes_file_id integer not null references Portfolios(file_id)
);
下面的谜底:
1.需要记录那一个投资组合代替了当前的投资组合
2.需要记录这个投资组合替代的是那一种投资组合
3.需要能够恢复某一个投资组合(这个做的结论会替代一个或一系列投资组合, 并导致循环引用。)
4.因为issue_date的存在,能够记录日期, 但那时如果恢复某个投资组合,那就又一个难题!
5.不论select语句上的投资组合是什么, 都能够select出最新的投资组合。
6.需要能够对一些的文档重新生成审计追踪。
方法#1
因为在谜底的说明中无意表达式“前驱”和“后驱”的说法, 所以可知这个问题是处理序数计数的。让我们应用已知的嵌套集合代码代替它。
首先, 创建一个表, 容纳每个文件的所有信息:
create table Portfolios(
file_id integer not null primary key,
other_stuff varchar2(40) not null
);
向Profolios表中插入数据
insert into portfolios values(222,'stuff');
insert into portfolios values(223,'old stuff');
insert into portfolios values(224,'new stuff');
insert into portfolios values(225,'borrowed stuff');
insert into portfolios values(322,'blue stuff');
insert into portfolios values(323,'purple stuff');
insert into portfolios values(324,'red stuff');
insert into portfolios values(325,'green stuff');
insert into portfolios values(999,'yellow stuff');
然后创建一个表容纳文档的后继,并包含两个特殊的列: chain 和next
create table Succession(
chain integer not null ,
next integer default 0 not null,
file_id integer not null references Portfolios(file_id),
suc_date date not null,
primary key(chain, next)
);
向succession表中插入数据
insert into Succession values(1,(select count(*) from Succession where chain=1),222,to_date('2007-11-1','yyyy-mm-dd'));
insert into Succession values(1,(select count(*) from Succession where chain=1),223,to_date('2007-11-2','yyyy-mm-dd'));
insert into Succession values(1,(select count(*) from Succession where chain=1),224,to_date('2007-11-4','yyyy-mm-dd'));
insert into Succession values(1,(select count(*) from Succession where chain=1),225,to_date('2007-11-5','yyyy-mm-dd'));
insert into Succession values(1,(select count(*) from Succession where chain=1),999,to_date('2007-11-25','yyyy-mm-dd'));
insert into Succession values(2,(select count(*) from Succession where chain=2),322,to_date('2007-11-1','yyyy-mm-dd'));
insert into Succession values(2,(select count(*) from Succession where chain=2),323,to_date('2007-11-2','yyyy-mm-dd'));
insert into Succession values(2,(select count(*) from Succession where chain=2),324,to_date('2007-11-4','yyyy-mm-dd'));
insert into Succession values(2,(select count(*) from Succession where chain=2),322,to_date('2007-11-5','yyyy-mm-dd'));
insert into Succession values(2,(select count(*) from Succession where chain=2),323,to_date('2007-11-12','yyyy-mm-dd'));
insert into Succession values(2,(select count(*) from Succession where chain=2),999,to_date('2007-11-25','yyyy-mm-dd'));
选出最新组合,无论组合怎样变化,我都能选出最新的组合:通过某个组合的max(next)找到file_id, 然后找到Portfolios就可以
select distinct * from Succession s, Portfolios p
where s.file_id =p.file_id and next=
(select max(next) from Succession s2
where s.chain=s2.chain);
完成审计功能: 通过chain, next排序就可以得到新顺序的投资计划了
select chain , next ,p1.file_id, other_stuff , suc_date
from succession s1,portfolios p1
where s1.file_id=p1.file_id
order by chain, next;
记录这个投资组合组合替代哪个投资组合
select s1. file_id , f2.file_id
from succession s1, succession s2
where s1.chain=s2.chain
and s1.next=s2.next+1 and s1.file_id=999;
分享到:
相关推荐
标题“SQL解惑-麻醉师问题”提示我们这可能是一个关于使用SQL解决特定问题的案例,特别是与医学领域的麻醉师工作相关的数据查询或分析。在描述中提到了一个博客链接,但具体内容没有给出,不过我们可以根据标题和...
引入sql-map-config-2.dtd后,开发者可以确保配置文件的语法正确,避免因格式错误导致的运行时问题。 在实际应用中,这两个DTD文件通常会被引用到对应的XML配置文件顶部,如下所示: ```xml <!DOCTYPE sqlMap ...
flume-ng-sql-source-1.5.2.jar从数据库中增量读取数据到hdfs中的jar包
通过阅读《SQL解惑 第二版》,读者不仅能够理解SQL的基本语法,还能学会如何在实际工作中有效利用SQL解决问题。书中的案例分析使学习过程更为直观,对于初学者和有一定经验的数据库管理员来说,都是一份极好的学习...
SQLPrompt-10.14.0.4064.exe 支持SSMS 19.1
《SQL解惑》(第2版)是一本针对SQL编程的学习资料,其中包含了75个与SQL编程相关的实用问题,这些问题覆盖了数据库应用的众多领域,例如金融、投资、旅游、销售以及计算等方面。本书不仅为读者提供了多个角度的解决...
sqldeveloper-17.2.0.188.1159-x64.zip oracle mysql 数据库,适合Windows系统,可以链接mysql是一款不错的数据库x64
根据提供的标题、描述以及部分上下文内容,我们可以推断出这本书《SQL解惑(中文版)》主要聚焦于SQL技能的提升与深化理解。虽然实际的内容并未给出具体示例或章节概述,但根据书名及简介,我们可以围绕SQL的基础...
SQL解惑解惑,意味着我们将深入探讨SQL的常见问题、概念以及解决策略。在这个过程中,我们不仅要理解SQL的基本语法,还要掌握如何有效地查询、更新和管理数据。 首先,让我们从SQL的基础开始。SQL分为四大主要部分...
《SQL解惑(第2版)》是一本深入探讨SQL编程问题的专业书籍,旨在帮助读者解决在实际工作中遇到的各种SQL难题。SQL,全称为Structured Query Language,是用于管理和处理关系数据库的标准语言。这本书以问题为导向,...
这个压缩包“azkaban-sql-script-2.5.0.tar.gz”包含的是Azkaban 2.5.0版本的SQL脚本,这些脚本可能用于在数据库中设置和配置Azkaban所需的表结构和权限。以下将详细介绍Azkaban的关键概念、功能以及与SQL脚本的关系...
SQL Tracker是一款专为ORACLE数据库设计的SQL执行跟踪工具,其beta版v0.08的发布,为数据库管理员提供了更精细的性能监控和问题排查手段。 SQL Tracker的核心功能在于它能实时跟踪并记录应用程序执行的SQL语句,这...
【中文】【 SQL 解惑(第2版) 】【pdf】【73.63MB】,提供下载地址,经典的资料,书籍,绝对经典!
sql-map-config-2.dtd ibats的dtd文件
找了半天才找到的 SQL解惑(第二版) 中文的 完整版 清晰版 需要的自己下把
各模块的sql
在Java编程环境中,连接Microsoft SQL Server数据库通常需要特定的驱动程序,这就是所谓的JDBC驱动程序。`sqljdbc4-4.0.jar`是Microsoft提供的一个适用于Java的SQL Server JDBC驱动程序,它允许Java应用程序通过JDBC...
flume连接数据库