Рекомендуемый дизайн базы данных SQL для тегов или [закрытые] метки

Попробуйте это решение, которое отлично сработало для меня.

В основном, это переустановка / обновление до последней версии mysql от варева, а затем установка mysqlclient или MySQL-Python из global pip3 вместо virtualenv pip3.

Затем вы получите доступ к virtualenv и успешно установите mysqlclient или MySQL-Python.

274
задан Dan Dascalescu 11 February 2015 в 13:09
поделиться

4 ответа

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

Table: Item
Columns: ItemID, Title, Content

Table: Tag
Columns: TagID, Title

Table: ItemTag
Columns: ItemID, TagID
389
ответ дан Yaakov Ellis 23 November 2019 в 02:11
поделиться

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

tagcloud: {
  map: function(doc){ 
    for(tag in doc.tags){ 
      emit(doc.tags[tag],1) 
    }
  }
  reduce: function(keys,values){
    return values.length
  }
}

Выполнение это с group=true сгруппирует результаты именем тега, и даже возвратит количество количества раз, что с тегом встретились. Это очень похоже на подсчет случаев слова в тексте .

37
ответ дан Nick Retallack 23 November 2019 в 02:11
поделиться

Используйте единственный столбец [1] форматированного текста для хранения тегов и используйте способный механизм полнотекстового поиска для индексации этого. Еще Вы столкнетесь с масштабирующимися проблемами при попытке реализовать логические запросы.

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

[1] Некоторый RDBMS даже обеспечивает собственный тип массива, который мог бы еще лучше подойти для устройства хранения данных, не нуждаясь в шаге парсинга, но мог бы вызвать проблемы с полнотекстовым поиском.

12
ответ дан David Schmitt 23 November 2019 в 02:11
поделиться

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

Наличие таблицы "тегов" и таблицы карты делает его довольно тривиальным для генерации облаков тегов & такой, так как можно легко соединить SQL для получения списка тегов с количествами того, как часто каждый тег используется.

9
ответ дан Mark Biek 23 November 2019 в 02:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: