0

场景:用户可以创建一个关系类型,比如Friends,然后用户可以链接一些其他用户作为关系定义。如果用户被删除,关系定义也应该被删除,用户之间的关系也需要被删除。

这是 sql server 上的演示数据库设计:http: //i.stack.imgur.com/3pcOy.png 外键是:

  1. 表 2.UserId 参考表 1.UserId;
  2. 表 3.RelationShipId 参考表 2.RelationshipId;
  3. 表 3.UserId 参考表 1.UserId;
  4. 表 3.OtherUserId 参考表 1.UserId;

我的目标是当从表1中删除记录时,它将删除表2和表3中的相关记录;删除表 2 中的记录时,会删除表 3 中的相关记录。

当我尝试使用“ON DELETE CASCADE”时,出现错误“可能导致循环或多个级联路径”,我也不想使用触发器。

你对这种情况有什么建议吗?谢谢,

4

1 回答 1

0

表3中的userid不是多余的吗?或者至少如果您将用户 ID 放在表 3 中,为什么还有表 2?表 2 中的信息已经存在于表 3 中。

是否存在表 3 上的用户 id 与表 2 上的关系记录不同的情况?如果不是 - 表 2 是多余的。

于 2013-04-18T12:03:23.463 回答