Какой подход использовать в обновлении таблицы многие ко многим?
Я в размышлениях столкнулся с ситуацией, что нет необходимости в такой таблице использовать Update
Почему:
Если нам нужно изменить ранее заданные связи, например, у товара есть 2 фильтра, то нам нужно явно передать в where старые id фильтров, иначе получится вот так:
UPDATE products, product_category, product_filter
SET products.name ='Платок',
products.price='3459.00',
products.description='Белый платок',
product_category.category_id='2',
product_filter.filter_id='1',
product_filter.filter_id='2'
WHERE products.id='2' AND product_category.product_id='2' AND product_filter.product_id='2'
Если же нам нужно удалить один из фильтров, а второй обновить, то нам необходимо провести две операции: delete и update, передавая в update id старого фильтра, который мы хотим обновить.
И так мы получаем минимум две ситуации, где sql будет сильно отличатся, плюс потребность передавать id старых записей.
Третий же вариант - мы просто удаляем все записи, а потом вставляем новые.
UPDATE products, product_category
SET products.name ='Платок',
products.price='3459.00',
products.description='Белый платок',
product_category.category_id='2'
WHERE products.id='2' AND product_category.product_id='2';
DELETE * FROM product_filter
WHERE product_id='2';
INSERT INTO product_filter
(filter_id, product_id) VALUES ('1', '2'), ('2', '2')
У меня пока еще слабые знания в sql, потому хочу узнать "правильный" подход с точки зрения семантики и реализации.