Таблица ролей скорее всего будет использоваться всегда уже в бэкэнде. Т.е. всегда у тебя будет какая-то переменная с результатом $roles. Так вот ты можешь просто добавить в таблицу "roles" новое поле "permissions" с каким тебе удобно форматом, разделитель через запятую к примеру. "1;Админ;read,edit"
Отношение таблиц "Categories_Roles" не понятно для меня. Тут не могу подсказать