MySQL и предопределенные теги: одно решение для таблицы? - PullRequest
0 голосов
/ 13 июня 2019

У меня есть таблица items, в которую я хотел бы добавить теги.Пользователи смогут добавлять до трех из 15 ПРЕДУСТАНОВЛЕННЫХ тегов к каждому элементу.

Обычно вы выбираете таблицу tag, но так как у меня есть только несколько предопределенных тегов, которые никогда не изменятся, я задаюсь вопросом,есть более простой метод.

Я имею в виду наличие поля tags, где каждый бит представляет один из предопределенных тегов.Я бы OR выбрал теги и сохранил int.

Теперь мой вопрос: как будет выглядеть запрос, который говорит мне, какие теги (биты из int) были установлены для большого числастроки?

1 Ответ

0 голосов
/ 13 июня 2019

Хотя я на самом деле не рекомендую его использовать, именно для этого и был разработан тип данных SET.

Он сохраняется в столбце как целое число, причем каждый бит представляет одиниз тегов.Но когда вы выбираете значение, оно возвращается в виде списка тегов через запятую, и вы можете назначать значения таким же образом.Чтобы определить, является ли определенный тег значением, вы используете функцию FIND_IN_SET().

Вы также можете получить доступ к числовому значению столбца.Это полезно, если вы хотите замаскировать некоторые биты.

В приведенной выше документации содержится более подробная информация, а также некоторые предостережения.

Хотя пространство для хранения достаточно эффективно, большинство операций надзаданные значения не могут эффективно использовать индексы.Например, поиск всех строк с определенным тегом потребует полного сканирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...