您如何将代表时间许多一对多在SQL的关系?在非暂时情形之一会使用结表(又名链接/桥梁/图)连接双方。

时加入的时间跟踪一样简单,包括在该结表ValidStart和ValidEnd列?如果你这样做了,哪些问题(如果有的话)你碰到?有没有对这种关系的跟踪变化随着时间的推移更好的方法?

如果它可以帮助所有,在我的情况我专门使用SQL 2008和时间数据不双颞如我只跟踪有效时间。

有帮助吗?

解决方案

我的工作,同时使用时间数据和时间许多一对多关系的一个项目(现在一些年)。每个表具有ValidFrom和ValidUntil列(存储日期只)。

首先,必须定义有效*列,即ValidUntil是否包括从有效范围中排除的语义。您还需要指定NULL日期是否有效,以及他们的意思是。

接下来,需要几个功能,如dbo.Overlaps2()和dbo.Overlaps3(),它接收图2和3分别日期范围,并返回1,如果日期范围重叠,否则为0。

在最重要的是,我定义视图的多对多的关系与dbo.Overlap3(...)= 1。

另一点是有一个组,其计算基于在2代或3相关的表的日期的有效有效范围的功能。

最近,我不得不添加功能,以允许用户显示所有可用的数据,或仅当前有效数据。我在另一个组视图保存在一个用户表此设置,SPID打开连接时关联到用户,和筛选记录。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top