在过去的几年中,我读了很多关于MySQL中的外键的文章,尽管最近没有.我知道它们非常适合在论坛主题下使用子帖子,例如,如果我删除一个与该主题相关的帖子,其中有100个帖子与该主题相关联,那么外键将使其对我删除那100个主题,我是否正确?
我正在PHP / MysqL中的社交网络上工作,有一个带有用户ID的用户表,然后通过该用户ID字段将大约10个其他表连接到该表,我是否应该在此上使用外键?我将永远不需要更新所有表,但是例如,如果用户删除那里的帐户,过去我会像10个删除查询一样运行PHP,对于该用户,每个表上都有1个查询.使用外键听起来不错吗?
解决方法:
外键不执行删除数据的工作.它们确保您不会将数据输入到父表中无效的字段中.也就是说,如果用户表中没有UserId 100,则您将无法在子表中输入UserId 100的记录.
话虽这么说,使用带有外键的层叠删除将满足您的要求,但是请确保这是您真正想要发生的事情.您是否真的要删除给定用户的所有帖子(如果他们删除了他们的帐户),并且所有回复帖子到父帖子一直到整个线程.
您确实需要知道您在做什么以正确使用级联删除,而不会真正弄乱您的数据.