简单的问题,但不确定更好或更技术性的方式来标题。
三张桌子:
为了解释上述情况,有人点击了房屋资料中的,如,该资料会被插入到tbl_HouseLike和tbl_HouseLikeNotify表中。
进程会经常检查此第3个表并向主人发送通知,并且完成后,它只删除第3个(通知)表中的记录。它基本上用作临时空间,不用于存储长期关键数据。
如果从tbl_House删除了一所房子,我在tbl_HouseLike上使用删除级联删除相关记录。
问题是,处理第3张表的最佳方法是什么?
为tbl_HouseLikeNotify.HouseID引用添加FK tbl_House.HouseID 如果我这样做,如果从tbl_HouseLike中删除了一条记录,我必须从我的存储过程中的tbl_HouseLikeNotify表中删除。
为(tbl_HouseLikeNotify.HouseID,tbl_HouseLikeNotify.UserID)引用添加FK(tbl_HouseLike.HouseID,tbl_HouseLike.UserID)
那么引用复合键与引用父表有什么优缺点吗?无论参数如何,我都喜欢级联,如果有人不喜欢这样做的话。在发出通知之前的房子,它将从tbl_HouseLike和tbl_HouseLikeNotify中级联和删除。否则,我必须在我的存储过程中删除它。
答案 0 :(得分:1)
除非只允许一个用户在任何时间向房主发送通知,否则您必须选择选项2,因为在通知检查之间的相同间隔期间,您可能有多个人对同一房屋感兴趣。
选项2依赖于级联删除规则,可以提供更少的代码来进行编写,测试和维护。但是,如果您只希望所有者在任何时间间隔内只收到一个通知,那么您可能需要做一些工作来强制执行此限制。您还需要记录这一事实,因为选项2设计允许同一房屋上有多个待处理通知。