当前位置:  开发笔记 > 数据库 > 正文

你会如何在SQL中建立一个时间多对多的关系?

如何解决《你会如何在SQL中建立一个时间多对多的关系?》经验,为你挑选了1个好方法。

您如何在SQL中表示时间多对多关系?在非时间环境下,人们会使用连接表(也就是链接/桥/地图)来连接双方.

添加时间跟踪就像在联结表上包含ValidStart和ValidEnd列一样简单吗?如果你这样做了,你遇到了什么问题(如果有的话)?在这种关系中,是否有更好的方法来跟踪随时间的变化?

如果它有帮助,在我的情况下,我专门使用SQL 2008,时间数据不是双时态的,因为我只跟踪有效时间.



1> devio..:

我正在研究一个项目(现在已有几年了),它同时使用时态数据和时间多对多关系.每个表都有ValidFrom和ValidUntil列(仅存储日期).

首先,您必须定义Valid*列的语义,即ValidUntil是否包含在有效范围内或从有效范围中排除.您还需要指定NULL日期是否有效以及它们的含义.

接下来,您需要一些函数,例如dbo.Overlaps2()和dbo.Overlaps3(),它们分别接收2和3个日期范围,如果日期范围重叠则返回1,否则返回0.

最重要的是,我使用dbo.Overlap3(...)= 1定义了多对多关系的视图.

另一点是具有一组函数,这些函数基于2或3个相关表中的日期来计算有效有效范围.

最近我不得不添加功能以允许用户显示所有可用数据,或仅显示当前有效数据.我将此设置保存在users表中,在打开连接时将SPID与用户关联,并在另一组视图中过滤记录.

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有