2013-09-20 6 views
0

Я пытаюсь создать отношения между блогом и изображением, где в блоге может быть не более одного изображения (думаю, как аватар), но его также нет. Поэтому я помещаю внешний ключ в таблицу блогов. Я пытался создать ограничение на таблицу изображений, где, если блог удаляется, связанное с ним изображение также удаляется из базы данных. Однако я не уверен, как создать ограничение, если внешний ключ не находится в таблице, которая должна быть каскадной. Вот мои таблицы, за исключением тех полей, которые не имеют значения:Foreign Key Constraint Mysql

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

Единственная причина, по которой изображения в отдельной таблице были бы связаны с тем, что одно и то же изображение может использоваться несколькими блогами. В таком случае вы все равно не захотите удалять на каскаде. Вам понадобится специальная логика, чтобы определить, есть ли нет блогов, которые ссылаются на это изображение, чтобы удалить его - что-то, что вы не могли сделать через DDL.

Вместо этого просто сделайте значения значений, равных нулю, для столбцов таблицы blogs.

+0

Я не упоминал об этом, но изображения используются и в других целях, например, изображения в сообщениях в блогах, поэтому я подумал, что имеет смысл хранить их одинаково. Тем не менее, я буду рассматривать просто сохранение пути, как вы сказали, так как это может оказаться лучшим решением в любом случае. – Kai

Смежные вопросы