Внешний ключ и отношение n-to-n - PullRequest
1 голос
/ 10 ноября 2010

Допустим, у меня есть эти таблицы sql:
a) book
b) customer
c) loan_history (book_id,customer_id ...)

Я могу определить два ссылочных внешних ключа (при каскаде удаления) из loan_history , ссылающихся на book и customer , поэтому:

  • история заимствований записи, связанные с книгой , будут удалены при удалении книги.
  • заемщиков истории записейподключенный к клиент будет удален при удалении клиента.

Но как определить внешние ключи таким образом, что клиент будет удален, когда онк нему не подключено loan_history , поэтому удаление book может рекурсивно удалить также customer ?

Возможно ли это, или мне нужноиспользовать триггеры?

1 Ответ

2 голосов
/ 10 ноября 2010

Для этого нужно использовать триггеры.

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

Iнаписал бы сценарий (и запустил бы его с CRON) для удаления пользователей без истории заимствований с более чем N днями от их последнего действия.

И еще один совет - внешний ключ в книгах указателей заимствований заимствований должен быть установлен на ON DELETE RESTRICT,Если книга заимствована (или была заимствована), ее НЕ следует удалять

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...