我正在尝试在博客和图片之间建立一种关系,博客最多可以拥有一个图像(想像头像一样),但它也可以没有。因此,我把外键放在博客表上。我试图在图像表上创建约束,如果博客被删除,其关联的图像也会从数据库中删除。但是,当外键不在应该级联的表中时,我不确定如何创建约束。这是我的表格,减去那些不相关的字段:
CREATE TABLE `blogs` (
`id` int(10) unsigned NOT NULL auto_increment,
`image_id` int(10) unsigned default NULL,
PRIMARY KEY (`id`),
) ENGINE=InnoDB AUTO_INCREMENT=921 DEFAULT CHARSET=utf8;
CREATE TABLE `images` (
`id` int(10) unsigned NOT NULL auto_increment,
PRIMARY KEY (`id`),
) ENGINE=InnoDB AUTO_INCREMENT=251021 DEFAULT CHARSET=utf8
有任何帮助吗?
答案 0 :(得分:0)
将图像放在单独的表中的唯一原因是,如果多个博客可以共享相同的图像。在这种情况下,您不希望在级联上删除。你需要特殊的逻辑来确定是否有 no 博客留下引用该图像来删除它 - 这是你无法通过DDL做的事情。
相反,只需在blogs
表上设置图像值为可为空的列。