Тут же вопрос в результате. Надо сохранить выбранные категории при условии, что уже какие то сохранены. Удалить все сохраненные и добавить выбранные это один алгоритм со своими минусами, но он тривиален по кодированию. Можно более сложный алгортим запилить: выбрать сохраненые, взять те которые выбраны и составить два списка из этого - один на удаление, другой на добавление.
Если система разрабатывается лучше написать TODO и оставить как есть, а когда в продакшен пойдет оптимизировать код.
В целом более сложный алгортим даст более эффективное использование памяти таблицы, но я не думаю, что категории будут менятся часто. Это условно постоянные данные, так что можно оставить текущий алгортим.