Структура таблицы для избранной статьи / статьи и т. Д. - PullRequest
0 голосов
/ 19 апреля 2020

Я хотел спросить, что является приличным способом реализации избранной статьи или статьи. В некоторых блогах вы устанавливаете запись как избранную на основе вашего собственного выбора, и последняя из существующего списка заменяется; Я sh хочу сделать то же самое.

Скажем, у меня есть таблица, озаглавленная Сообщений со следующими столбцами: post_id, post_message, post_date, user_who_posted, category (то есть Art, Film).

Я выбираю между этими двумя идеями, но они могут быть неуместными:

  1. Создайте столбец в той же таблице под названием «Тип» со значением «Ноль» или «Рекомендуемое».
  2. Создайте столбец в той же таблице под названием «Featured» со значением 1 или 0.

Если один из двух приведенных выше уместен, он поставит небольшую дилемму, потому что может быть сценарий, в котором я бы хотел, чтобы старая статья находилась на первом месте в списке избранных по сравнению с новыми. Если да, имеет ли смысл создавать еще один столбец для отслеживания даты и времени, когда я устанавливаю их как избранные? Что произойдет, так это то, что я просто установлю старую статью, которая будет показана снова или будет добавлена ​​последней, чтобы быть в верхней части списка.

Ответы [ 3 ]

1 голос
/ 19 апреля 2020

«Соответствующий» является субъективным, но если вы хотите быстрый и простой способ сделать это, у вас может быть другой атрибут в таблице записей под названием featured_order, который будет целым числом, а затем вы можете запросить в соответствии с тем, post - featured, и порядок по атрибуту featured_order.

Что-то вроде:

SELECT * FROM `posts` WHERE `featured` = 1 ORDER BY `featured_order` ASC;

Обратите внимание, что featured_order должен быть обнуляемым.

Затем вы можете установить более раннее сообщение с более низким featured_order, чем у более нового сообщения, которое также представлено, но имеет более высокое значение featured_order.

Надеюсь, это имеет смысл.

Причина, по которой я предпочитаю целые числа для этого типа функциональности, заключается в том, что (для нас, людей) гораздо проще выяснить, какой порядок выше / ниже по сравнению с атрибутом DATETIME, и установить порядок также проще.

1 голос
/ 19 апреля 2020

Ни один из двух подходов не рекомендуется.

Если вы создадите столбец с именем Type, он будет неоднозначным, а значения трудно отследить.
Если вы создадите столбец с именем Featured, столбец имеет четко определенное значение, но значения не очень полезны. Почему 0 или 1?

Лучший вариант в таких требованиях - создать столбец с именем Featured типа Datetime и сделать его обнуляемым. Если значение НЕДЕЙСТВИТЕЛЬНО, то вы знаете, что сообщение не представлено. Если указано несколько сообщений, вы можете показать только самые последние. Если вам нужно разместить более старую заметку, просто назначьте ей дату sh.

0 голосов
/ 01 мая 2020

Ни то, ни другое - создайте другую таблицу.

В этой таблице будет ссылка на избранные статьи, плюс информация о заказе, но не более того.

Таким образом, все манипуляции «Featured» находится в этой дополнительной таблице и только в этой дополнительной таблице.

...