我想知道是否存在“属于”这种关系,它的功能是什么,或者它是否与“有一个”相反?
构建ORM时出现了问题,并希望找到一种方法来确定何时应该自动删除实体实例,例如:
用户'有很多'线程
线程'有很多'评论
线程'有一个'用户
评论'有一个'主题
假设您删除了一个用户实例。其相关的线程实例应保持不变。 但是,如果删除线程实例,则应删除其注释。
使用上述模式,ORM无法判断何时删除以及何时不删除。 但如果我使用'属于',它可能是一个解决方案:
用户'有很多'线程
线程'有很多'评论
线程'有一个'用户
评论'属于一个'主题
这有意义吗? ORM是可能的,但ERD是否涵盖了这种情况?一对一/一对多的连接似乎不够。
有什么想法吗?
答案 0 :(得分:2)
我见过的一般实现都提供了“属于”关系。从技术上讲,这将存在于任何“有很多”关系中,因为外键将存在于子表中。
来自Kohana's ORM class documentation的定义表明,一对一关系是“有一个”还是“属于”取决于外键字段的位置。如果它与核心模型在同一个表中,则它是“属于”关系。如果它在另一个表中,那么它就是“有一个”关系。