Что вы делаете с разовым фрагментом данных, который необходимо сохранить?
-
23-08-2019 - |
Вопрос
Недавно меня попросили добавить что-нибудь для администратора сайта, где он мог бы что-нибудь «показать».
Предположим, что это «популярная статья».
Поэтому, естественно, у нас уже есть модель базы данных «статей», и она имеет около 20 столбцов, поэтому мне действительно не хочется раздувать ее больше, чем она есть.
Мои варианты:
Добавьте «избранное» bool (или int) и поймите, что в любой момент времени будет отображаться только одна вещь.
Создайте новую модель для хранения этого и любых других элементов, которые могут появиться.
Я принимаю ваши предложения!;)
Что вы делаете в этом случае?Я сталкиваюсь с этим время от времени и просто ненавижу привязывать к чему-то еще одну колонку.Эту информацию НЕОБХОДИМО сохранить.
Решение
Если одновременно может быть представлена только одна статья, добавление столбца bool является пустой тратой.Вам следует подняться на уровень выше и добавить столбец для FeaturedArticleID.У вас есть таблица Site_Settings?
Другие советы
Я бы, вероятно, просто добавил простую таблицу из двух столбцов, которая по сути представляет собой хранилище значений ключей.Затем добавьте новый столбец со значениями типа (featured_article_id, 45)
или какой бы ни был первый представленный идентификатор.
Редактировать:как указано в комментариях rmeador, следует отметить, что это хорошее решение только до тех пор, пока все остается относительно простым.Если вам нужно хранить более сложные данные, подумайте о более гибком решении.
Вы можете использовать расширяемую модель, например таблицу атрибутов, а затем связывающую таблицу для формирования связи «многие ко многим» между статьями и атрибутами.Таким образом, подобные функции не требуют изменения схемы.
Создайте какую-нибудь таблицу global_settings со столбцами имя_параметра и значение_параметра.Поместите сюда идентификатор избранной статьи.
Для таких быстрых и грязных вещей я предпочитаю включать какую-то таблицу настроек:
CREATE TABLE Settings (
SettingName NVARCHAR(250) NOT NULL,
SettingValue NVARCHAR(250)
)
Если вам нужны настройки для каждого пользователя или клиента, а не глобальные, вы можете добавить столбец, чтобы идентифицировать его для этого конкретного пользователя/клиента.Затем вы можете просто добавить строку для FeaturedArticle и проанализировать идентификатор из строки.Он не очень оптимизирован, но открытый текст очень гибок, и это именно то, что вам нужно.