Эффективное хранение и поиск категорий в тегах данных - PullRequest
0 голосов
/ 03 апреля 2012

У меня следующая ситуация в моем проекте. Есть несколько значений тегов, которые связаны с одной категорией.

Пример:

Fruits : Apple, Banana, Grape
Vegetables: Tomato, Cabbage, Brinjal

Теперь для этого я использую простую таблицу в базе данных с двумя столбцами Category, Tag и храню «Фрукты» в столбце Category и «Яблоко, банан, виноград» в столбце Tag (каждый тег отделяется от комы). И когда я запрашиваю одну категорию, используя простой оператор SQL, такой как select tag from TagsCollection where category='Fruits';, я получаю строку со всеми тегами, которые принадлежат категории «Фрукты». Обратите внимание, что таблица будет иметь только один экземпляр какой-либо конкретной категории в качестве записи. И затем мне нужно разделить все теги для дальнейшей обработки, поэтому я разделил строку на запятые в своем языке программирования (Java, здесь).

Теперь, что может быть идеальным способом реализовать что-то подобное? перейти к RDBMS-хранилищу (точнее, к MySQL) или есть какой-либо другой более быстрый способ хранения и извлечения данных такого типа.

Ответы [ 2 ]

0 голосов
/ 03 апреля 2012

Это зависит от ожидаемого размера вашей базы данных и, в частности, таблицы TagsCollection.

Вы можете выбрать любой дизайн СУБД, если вы не ожидаете огромное количество записей (под огромным я имею в виду миллиарды записей).и десятки или сотни запросов в секунду), или перейдите к системе NoSQL, один из:

0 голосов
/ 03 апреля 2012

Ваш текущий дизайн нарушает первую нормальную форму, так как у вас есть несколько значений в одной строке одного столбца.Кроме того, любой запрос значений тегов, скорее всего, будет работать плохо.

Нормализованный дизайн будет содержать столбцы категорий и тегов, но будет иметь отдельную строку для каждой комбинации категорий и тегов, например:

Category  Tag
Fruits    Apple
Fruits    Banana
Fruits    Grape
...
...