Вопрос

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

В настоящее время я храним категории как значение varchar в базе данных mysql. В качестве примера поля будет содержать 2,4,8, если пользователь выбрал категории с идентификатором: 2, 4 и 8.

Чтобы получить такие сообщения в блоге для категории с ID 4, я использую:

SELECT col FROM table WHERE LOCATE(',4,', CONCAT(',',col,','))

Мне сказали, что ценности, отделенные с десятичной запятой, - это нее (очень плохо), когда речь идет о хорошей структуре базы данных!

Может ли кто-нибудь предоставить мне хороший путь / метод, чтобы сделать это самым эффективным способом?

заранее спасибо

Это было полезно?

Решение

Гибкая и надежная установка, как написано так много раз в так:

POSTS
id
name
text

CATEGORIES
id 
name

POST_CATEGORIES
post_id
category_id

Где текущий запрос будет:

SELECT p.id, p.name, p.text
FROM posts p
JOIN post_categories pc
ON pc.post_id = p.id
AND pc.category_id = 4;

Другие советы

Посмотрите в нормализацию реляционной базы данных. Для вашего конкретного случая рассмотрите возможность создания 2 дополнительных таблиц, категорий и блогатегорий в дополнение к таблице содержимого блога. Категории содержат определение всех тегов / категорий и ничего другого. Таблица BlogCategories - это перекрестная таблица «МНОГДА», которая, вероятно, в вашем случае содержит ссылку на внешний ключей на таблицу блога и внешний ключей ссылку на таблицу категорий. Это позволяет связаться с 1 записью блога с несколькими категориями и 1 категорией, которая должна быть связана с несколькими записями блога.

Получение данных не будет никакой сложнее, чем 3 стола, присоединяйтесь к худшему, и вы будете вне подстрочного бизнеса, чтобы понять нашу вашу деловую логику.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top