Сделав оба в предыдущих жизнях, я думаю, что ответ зависит от того, кто поддерживает CSS.
Если для нетехнического пользователя это простой интерфейс для управления несколькими простыми стилями, я бы сохранял это в базе данных, но в виде структурированных данных, а не в виде необработанного CSS, и генерировал сам CSS во время выполнения. Однако, как упоминает Sohnee, вы должны убедиться, что он не генерируется для каждого запроса, так как это потребует ненужных накладных расходов - вы должны генерировать простой файл или эффективно кэшировать.
Если это интерфейс для пользователя типа веб-разработчика, который понимает концепции файлов, и вы хотите дать им полный доступ для написания любых CSS-файлов, которые им нравятся (и вы им доверяете!), Тогда я бы сохранил его как файл (если бы я был разработчиком, я бы хотел, чтобы он использовал мой сырой CSS). Однако я бы не стал добавлять его в существующую таблицу стилей (при условии, что это базовый набор стилей по умолчанию для сайта)
У меня была бы отдельная таблица стилей для пользовательских стилей, вызываемая на странице с отдельным тегом ссылки. Это позволит отделить «код» сайта от его «контента». Обратите также внимание на то, что здесь говорит Жаф-Бен Дугид о том, что браузер не кэширует старые версии, добавляя какой-либо параметр версии в URL.
запись в БД: у меня больше контроля
могу загружать только те классы, которые мне нужны
каждый документ
Я бы сказал, что только загрузка классов для одного документа будет плохой идеей. Браузеры настроены на кэширование CSS, поэтому вам почти всегда будет лучше вызывать весь ваш CSS из внешних файлов с соответствующими заголовками кэширования.