我一直在阅读 Snodgrass 的“在 SQL 中开发面向时间的数据库应用程序”,我也在查阅其他文档,但我愿意在PostgreSQL。
还找到了这个文件。
如果能提供有关以下主题的任何链接或建议,我将不胜感激:
- 时态表和双时态表
- 聚结
- 有效期、适用时间、交易时间
- 时态数据库中的主键、约束和参照完整性
- 时态数据库的设计和良好设计实践
- 以上所有内容的本机 Postgresql 解决方案
我还有更多内容要从书中阅读,我发现了一些关于时间的 SQL:2011 问题,但它们没有在 Postgresql 中实现。
还有一些事情我不知道如何处理或理解,例如,我发现这篇文章提到了这一点:
CREATE TABLE travel_log (
id serial PRIMARY KEY,
name varchar(255),
travel_range daterange,
EXCLUDE USING gist (travel_range WITH &&)
);
据我所知,它可能对没有重叠行很有用,但即使我搜索了 Postgresql 文档,我也只阅读了 EXCLUDE 的作用并且那个要点只是某种类型的 INDEX,但我无法弄清楚哪种语法是“WITH &&”的东西,它提供了什么。
只要拥有可以了解所有这些的资源,我就会很高兴。非常感谢。
WITH
关键字定义用于测试两行之间“相等性”的运算符。常规唯一索引只是排除约束的特例。如果您要使用排除约束来定义“正常”唯一约束,您将使用
=
as 运算符,例如:exclude using btree (id with =)
而不是unique (id)
&&
for 范围类型是“重叠”运算符,它测试两个范围是否重叠。例如
返回真(因为范围重叠)
尽管
将返回 false,因为没有重叠。