Задать вопрос
  • MySQL. Как поддерживать ссылочную целостность при наличии связи многие-ко-многим?

    hbuser
    @hbuser Автор вопроса
    Ага, ясно. Тем не менее, в зависимости от логики приложения, возможна и описанная мной ситуация? Но это, видимо, частный случай.
  • MySQL. Как поддерживать ссылочную целостность при наличии связи многие-ко-многим?

    hbuser
    @hbuser Автор вопроса
    Уточнение.
    В таком случае, у нас ведь получается, технически, что две таблицы по отношению к соединительной являются главными. Но логически одна таблица из двух является главной (ведь при нормализации мы выделяем сущности из основной таблицы в дополнительные), а значит, что мы можем удалить данные из "главной" таблицы и при этом, с помощью средств поддержания ссылочной целостности (ПСЦ) движка, удалится и запись из соединительной таблицы. Но мы не можем удалить данные из "подчиненной" таблицы, покуда на нее ссылается хоть одна строка из "главной", а значит пока есть хоть один внешний ключ в соединительной таблице, ссылающийся на первичный ключ "подчиненной" таблицы. Насколько я понимаю, это будет общепринятой практикой, как правило. Итого, строки касающиеся ПСЦ, при создании соединительной таблицы, будут выглядеть таким образом:
    FOREIGN KEY `main_table_id` REFERENCES `main_table` (id) ON UPDATE CASCADE, ON DELETE CASCADE,
    FOREIGN KEY `child_table_id` REFERENCES `child_table` (id) ON UPDATE CASCADE, ON DELETE RESTRICT
    Я правильно понимаю?