如果我发现自己想要对存储在我的关系数据库中的对象进行深拷贝,我是否一定在架构上做了一些根本性的错误?这是我问的另一个(更详细的)问题的不同角度,但对 Copying Relational Table Data 没有得到太多回应。
最佳答案
这取决于您的关系表代表什么,以及您的哪些实体组合在一起以构建“业务对象”。例如,如果您有一个内容管理系统的关系模型,其中包含一个表“Postings”和一个表“Text_lines”,其中每个 Posting 都包含一个文本行列表,那么您的业务对象“Posting”的有效副本很可能是“Postings”实体与所属 Text_lines 实体的深拷贝。
另一方面,有两个表“部门”和“员工”,一个部门的正确副本很可能不是深拷贝(至少,如果每个员工在某个时间点与一个部门相关联)。在关系数据库方案中,这些差异通常与分配给关系的参照完整性检查密切相关。可以使用具有“ON DELETE CASCADE”完整性的外键约束对关系“Postings”->“Text_lines”进行建模(当然,如果您的数据库支持)。但是,“部门”->“员工”不应该有这样的“ON DELETE CASCADE”检查。
关于database-design - 数据库和深拷贝,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3260091/