![]() |
1
2
这是数据建模中相当常见的问题。基本上可以归结为: 你对这景色感兴趣吗 现在 在某个时间点的观点,还是两者兼而有之? 例如,如果您有一个为订阅建模的服务,您需要知道:
这种问题的起点是要有一个历史表,例如:
将用户的服务历史链接在一起,您就有了他们的历史。那么,你如何模拟他们现在拥有的东西呢?最简单(也是最不规范化的视图)是说,最后一条记录或结束日期为空或当前或未来结束日期的记录就是它们现在拥有的。 正如您可以想象的那样,这会导致一些粗糙的SQL,所以这是选择性地去噪的,所以您有一个服务表和另一个历史表。每次更改服务时,都会创建或更新历史记录。这种方法使历史表更像是 审计表 (你将看到另一个词)。 这是对你的问题的分析。你需要知道:
但是你也需要知道在某个时间点上谁是这些事情中的每一个,所以你需要一个所有这些事情的历史。 因此,2003年8月20日,彼得·科斯特洛发布了一份新闻稿,你需要知道,此时他:
因为可以想见,有人可能对彼得·科斯特洛或财务主管的所有新闻稿都感兴趣,这将导致相同的新闻稿,但如果没有历史,将无法追溯。 此外,您可能需要知道哪些座位在哪个州,可能是地理边界等等。 所有这些都不需要模式更改,因为模式应该能够处理它。 |
![]() |
blogger13 · 视频租赁店数据库的规范化 5 月前 |
![]() |
ì¤ì¤í · 为什么LEFT INNER JOIN被弃用? 6 月前 |
![]() |
relatively_random · 确保两个表之间一致的共同参考 6 月前 |
|
Grenish Rai · Firestore错误“用户文档不存在” 9 月前 |
![]() |
Saijo-Shi · PLpgsql中的更新触发器 10 月前 |
![]() |
Dante · Django::配置不当:池不支持持久连接 10 月前 |
![]() |
YouLocalRUser · 删除重复行,保留第一行 11 月前 |