如果一对一的关系,MySQL Cascade删除

时间:2017-05-04 16:45:37

标签: mysql data-modeling delete-row one-to-one

想象一下存储书名和作者的数据库。当我删除书名时,我也想删除作者 - 但前提是他们没有其他与之相关的书名。

有办法吗?

或者,或许,您可以推荐我如何以不同的方式构建我的表来解决这个问题。这是一个应用程序的简化示例,我负责数据建模;也许通过询问上述问题,我的数据显然很差。

1 个答案:

答案 0 :(得分:1)

这是“鸡蛋和鸡蛋”数据建模方案之一,例如需要员工的部门,以及部门经理是部门中的员工。通常,你会认为作者是“父母”,因为它可以有很多书,书必须是作者;但如果没有他们撰写的书,他们就不是作家。

所以它并不是一个糟糕的结构,而是你所代表的关系的复杂性。 CASCADE不适合您;但您可以在“书籍”表格上使用AFTER DELETE触发器来检查已删除书籍的作者是否有剩余书籍,如果不存在则将其删除。