Разработка таблицы SQL с иерархией/подкатегориями

У меня есть таблица, которая выглядит примерно так:

Идентификатор | ключевое слово | категория | подкатегория | Sub-Sub-Category | Sub-Sub-Sub-Category

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

5
задан chips 22 January 2010 в 22:05
поделиться

5 ответов

Для отображения карты 1-1 нужна только одна таблица. Чтобы отобразить 1-множество или много-множество отображений, необходимо использовать несколько таблиц.

Если ключевое слово может соответствовать только одной категории/подкатегории/подкатегории, ваша текущая раскладка должна быть в порядке.

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

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

5
ответ дан 18 December 2019 в 13:14
поделиться

Я бы сделал это в двух таблицах с каждым внешним ключом, поступающим из таблицы категорий:

Keywords 
id (PK)
keyword
category_id (FK)

Categories
category_id (PK)
category
parent_category_id (FK)

данные в таблице категорий будут выглядеть:

category_id    category    parent_category_id
1              Food        null
2              meat        1
3              organic     1
4              fruit       3

, и что данные в таблице ключевых слов будут выглядеть:

id     keyword    category_id
1      grapes     4
2      chicken    2
6
ответ дан 18 December 2019 в 13:14
поделиться

Это может иметь смысл разделить его , если вы ожидаете переименовать или переставить свои категории позже:

  • Если вы оставите его, как есть, вам придется сделать этот переименовать / реорганизовать шаг ( Изменение полей категории / подкатегории / поддесяка / поддесяка / полей подпункты) Для каждой строки в этой таблице содержится категория, которая содержит категорию (((((Sub) sub). Это приводит к более сложному запросу, и если у вас есть очень много строк в этой таблице ключевых слов, это может быть проблемой производительности (= занять некоторое время для базы данных); С другой стороны, запросы (чтение) будут как можно быстрее.
  • Если вы разбите его вверх, то обновление (((Sub) sub) категория будет сделано только для менее строк, но запрос (чтение) займет больше времени, потому что он должен работать с двумя (или более) таблицами Отказ

Взвешивают минусы и плюсы обоих, а затем принять решение. М

1
ответ дан 18 December 2019 в 13:14
поделиться

Я бы использовал две таблицы, подобные этому.

   Categories
-------------------
PK,FK1 | CategoryID
       | Keyword 
       | Category 

  SubCategories
--------------------
PK,FK1 | CategoryID
PK,FK1 | SubCategoryID
1
ответ дан 18 December 2019 в 13:14
поделиться

Почему бы не просто добавить столбец Parentid и FK к PK?

1
ответ дан 18 December 2019 в 13:14
поделиться
Другие вопросы по тегам:

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