2012-02-17 80 views
0

我有一个页面,我已经创建了一大堆'feed items' - 像facebook - 我目前面临的问题是找出'删除逻辑'的最佳方法。也就是说,如果用户删除PAGE - 我要删除“连接信息”,以在此页:删除连接消息的页面的最佳方法?

  1. 饲料项目
  2. 评论

我有一个保存feedItems,注释等的MySQL表的数量 - 但我不确定如果用户删除页面,删除所有这些最“最佳方式”?

有人能够建议吗?我猜它类似于StackOverflow的 - 如果一个问题是删除,什么是删除

  1. 问题
  2. 答案
  3. 所有评论

等的最佳方式?

回答

0

如果您使用的是InnoDB,最简单的方法是在您的外键上使用ON DELETE CASCADE。当外键引用的行被删除时,该选项使MySQL删除表中的行。

例如,如果你有一个带有主键ID的问题表,并且一个表使用外键“question_id”“回答”,当问题被删除时,“答案”中的所有行包含相同的question_id也会被删除。

否则您需要编写多个删除语句,每个表一个。

+0

感谢您的回应:)因此,实际上删除'问题'[例如]还是'隐藏数据'更好?也就是说,用户点击'删除',但只隐藏 – Andy 2012-02-17 14:02:46

+0

嗯,我不能真正回答,这取决于您的应用程序的要求。如果您希望稍后能够取消删除数据,或者您仍需要链接项目的某些信息,则隐藏(软删除)数据是非常好的。一个典型的例子是,如果您保留已删除用户的帖子,您希望将用户行保留在数据库中,以便能够显示其用户名(以及“已删除”标签)。实现此目的的一个好方法是添加'deleted_at DATETIME NULL DEFAULT NULL'列,并存储删除的时间戳(如果不删除,则为NULL)。 – rlanvin 2012-02-17 15:03:34

相关问题