ну что таблицами, что json конфигом – одинаково нужно делать fallback, когда категории меняются/удаляются. у меня на магазе все в бд, а админка (слайдеры, акции, доставка/оплата, категории) в json конфиге, часть из которого идет юзеру, ну и все закэшировано и проверка на те же allowed ids in categories одной строчкой делается