gpt4 book ai didi

持久化引用和删除引用对象的 SQL 实践

转载 作者:行者123 更新时间:2023-11-29 13:46:23 25 4
gpt4 key购买 nike

我设计了一个 SQL 数据库系统(使用 Postgre),我有一个问题,即创建一个关系/引用的常见做法是什么,这种关系/引用即使在引用的对象被删除时也能持续存在。

比如有一个UserORM,还有ActivityORM,还有UserActivityRelation。 ActivityORM 将 user.id 作为外键来告诉谁创建了事件,而关系表是关于哪些用户应该知道该事件。

现在,如果我想从 db 中删除 actor,我仍然希望 ActivityORM 和关系表保持不变,以便其他用户仍然可以了解这些事件。我想知道设计此类系统的最常见/最佳实践是什么。简单的答案可能不是将它们分配为外键,或者创建一个非事件状态,但我想知道是否有更好的方法。谢谢。

最佳答案

正如您所提到的,删除有问题的外键约束将解决直接删除桥接表两侧的用户或事件的问题。但这会导致破裂的关系最终出现在您的数据库中。

我建议在这里使用软删除。向 UserORMActivityORM 表中添加一个 active 位列。然后,当您需要删除用户或事件时,只需将该记录标记为不活动即可。这将保证关键关系在删除过程中不会被破坏。这种方法还可以让您查看在任何删除之前曾经存在的关系。

关于持久化引用和删除引用对象的 SQL 实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47787469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com