2013-04-18 2 views
0

Сценарий: Пользователи могут создавать тип отношений, например Друзья, а затем пользователь может связать некоторых других пользователей в качестве определения отношений. если пользователь удален, определения отношений должны быть удалены, и отношения между пользователями также должны быть удалены.Удалить каскад не работает в этом сценарии

вот дизайн демо базы данных на SQL Server: http://i.stack.imgur.com/3pcOy.png внешние ключи являются:

  1. Таблица 2.UserId ссылки Таблица 1.UserId;
  2. Таблица 3.RelationShipId reference Таблица 2.RelationshipId;
  3. Таблица 3.Следующая ссылка Таблица 1.UserId;
  4. Таблица 3.Различная справочная таблица 1.UserId;

и моя цель - удалить записи из таблицы 1, она удалит связанные записи в таблице 2 и таблице 3; при удалении записей из таблицы 2 он удалит связанные записи в таблице 3.

и когда я пытаюсь использовать «ВКЛЮЧИТЬ УДАЛИТЬ КАСКАД», возникает ошибка «может вызывать циклы или несколько каскадных путей», t хотите использовать триггер.

У вас есть предложение по этому сценарию? Спасибо,

+2

База данных? PostgreSQL, MySQL, ORACLE ...? – RGPT

+0

@RGPT выглядит как SQL sever с изображения – Magnus

+1

Можете ли вы объяснить дизайн, пожалуйста? У меня такое чувство, что проблема может быть в самом дизайне. – naomi

ответ

0

Не является ли идентификатор пользователя в таблице 3 избыточным? Или, по крайней мере, если вы поместите идентификатор пользователя в таблицу 3, почему есть таблица 2? Информация в таблице 2 уже существует в таблице 3.

Есть ли ситуация, когда идентификатор пользователя на таблице 3 не будет таким же, как запись отношений на таблице 2? Если нет - таблица 2 является избыточной.

+0

. Я добавляю сценарий в описание. – FireFish

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