2

我想知道是否存在“属于”这种关系,它的功能是什么,或者它是否与“拥有”正好相反?

在构建 ORM 时出现了这个问题,想找到一种方法来确定何时应该自动删除实体实例,例如:

用户“有很多”线程

主题“有很多”评论

线程“有一个”用户

评论“有一个”主题

假设您删除了一个用户实例。其相关的线程实例应该保持不变。但是如果你删除一个线程实例,它的注释应该被删除。

使用上述模式,ORM 无法判断何时删除以及何时不删除。但如果我使用“属于”,它可能是一个解决方案:

用户“有很多”线程

主题“有很多”评论

线程“有一个”用户

评论“属于一个”主题

这有意义吗?ORM 是可能的,但是 ERD 是否涵盖了这种情况?一对一/一对多的连接似乎还不够。

有什么想法吗?

4

1 回答 1

2

我看到的一般实现都提供了“属于”关系。从技术上讲,这将存在于任何“有很多”关系中,因为外键将存在于子表中。

Kohana 的 ORM 类文档中的定义表明,一对一关系是“拥有一个”还是“属于”取决于外键字段的位置。如果它与核心模型在同一个表中,那么它是一个“属于”关系。如果它在另一个表中,那么它是一个“有一个”关系。

于 2010-09-27T13:59:18.870 回答