![]() |
1
8
这里有几个不同的相关书籍-一套用于“时态数据库”,另一套用于“RDBMS中的层次结构”。
在我看来,你问题的棘手部分是:
其他项目,如果不是直接向前,那么可以使用书中概述的技术,并按照其他答案中建议的行进行管理。部分问题在于理解这两个要点的含义。在某种意义上,它们是“相同的”;“整个层次”只是“整个子树”的一个特例。但更深层的问题是,“你想如何展示——形象化、表现——层次结构随时间的变化?”您是想比较开始时间和结束时间的状态,还是想看看中间的变化?您希望如何表示层次结构中个人的移动? 问题比答案多-但我希望这些建议能有所帮助。 |
![]() |
2
0
这里可以放几张平桌子。对于每一行,我们需要列ID、名称、parentID和inactiveddatetime(默认为空)。为属于Joe的旧文档设置日期时间,指示该记录不再有效,然后将其移到存档表(为了干净起见),然后为新文档创建新行(原始行的近副本),其中moe的id为parentid。这种方法的缺点是被移动的人必须获得一个新的ID,这可能不方便。 |
![]() |
3
0
我可以考虑一些合理的解决方案,这取决于您的数据是如何使用的以及它是如何变化的。 1)假设今天的等级制度是最重要的。我将在每个记录中存储今天的层次结构和常规的parentid列。对于以前版本的层次结构,我有一个历史表
每当层次结构更改时,都会向历史记录表中添加新行。 2)如果任何/所有层次结构都同等重要,我将存储一个基线层次结构,然后实现一个层次结构事务表。
|
![]() |
4
0
链接将在一段时间内存储树的表示形式。 这个结构表示一个网络而不是一个简单的层次结构,但它支持在层次结构中移动事物,但也支持在时间上进行回顾。在应用程序逻辑中需要检查的一些事情是,不允许Joe在同一时间的层次结构中的不同位置进行链接。 使用connect by previous子句(在Oracle中),报告相对容易。 如果要指定关系上的其他数据,则其他详细信息可以与项或甚至项链接相关。 |
![]() |
blogger13 · 视频租赁店数据库的规范化 6 月前 |
![]() |
ì¤ì¤í · 为什么LEFT INNER JOIN被弃用? 7 月前 |
![]() |
relatively_random · 确保两个表之间一致的共同参考 7 月前 |
|
Grenish Rai · Firestore错误“用户文档不存在” 11 月前 |
![]() |
Saijo-Shi · PLpgsql中的更新触发器 11 月前 |
![]() |
Dante · Django::配置不当:池不支持持久连接 11 月前 |
![]() |
YouLocalRUser · 删除重复行,保留第一行 1 年前 |