比如说,我们有 2 个实体:父母和孩子。
删除父级时,所有子级也将被删除。
伟大的。
现在我们有了一个叫做情人的实体。
每个人都可以“爱”许多其他人,并被许多人所爱。
如果一个人被删除会怎样?
是否级联删除:
- 根本不工作?
- 当最后一个爱你的人被删除时,删除你?
要不然是啥?
比如说,我们有 2 个实体:父母和孩子。
删除父级时,所有子级也将被删除。
伟大的。
现在我们有了一个叫做情人的实体。
每个人都可以“爱”许多其他人,并被许多人所爱。
如果一个人被删除会怎样?
是否级联删除:
要不然是啥?
我认为,您不应该以这种方式将级联与 to-many 一起使用,因为当它删除您删除的对象的所有情人时,它可能会越走越远并删除整个数据库。
因此,对您来说更好的方法是拥有一个中间(“加入”)实体,例如loverInfo。这是Apple根据朋友关系建议您如何执行此操作的方法。
最初被建模为与自身相反的多对多关系的一个常见示例是“朋友”。虽然不管他们喜不喜欢你是你表弟的表弟,但你不一定是你朋友的朋友。对于这种关系,您应该使用中间(“连接”)实体。中间实体的一个优点是您还可以使用它向关系中添加更多信息——例如,“FriendInfo”实体可能包含一些带有“排名”属性的友谊强度指示。这在此处进行了说明
在此示例中,Person 与 FriendInfo 有两个对多的关系:friends 表示源人员的朋友,befriendedBy 表示将源视为其朋友的人。FriendInfo 代表关于一个友谊的信息,“在一个方向上”。一个给定的实例会注明来源是谁,以及他们认为是他们朋友的一个人。如果感觉是相互的,那么就会有一个相应的实例,源和朋友互换。处理此类模型时还有其他几个注意事项:
要在一个人与另一个人之间建立友谊,您必须创建一个 FriendInfo 实例。如果两个人都喜欢对方,则必须创建两个 FriendInfo 实例
要破坏友谊,您必须删除 FriendInfo 的相应实例。