Хранить подкатегории форума в той же таблице или в отдельной таблице - PullRequest
1 голос
/ 28 сентября 2011

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

Допустим, у вас есть таблица ForumCategories. Добавив столбец ParentId, ссылающийся на идентификатор PK в одной таблице, вы можете легко сохранить основные категории и подкатегории в одной таблице.

В качестве альтернативы можно создать отдельную таблицу ForumSubCategories и сделать Id для этой таблицы FK, ссылающимся на столбец PK Id таблицы ForumCategories.

Оба решения будут работать, но каковы плюсы и минусы каждого решения?

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

Ответы [ 3 ]

2 голосов
/ 28 сентября 2011

Я не могу думать о каких-либо преимуществах использования 2 таблиц.Использование двух таблиц ограничит вас двухуровневым деревом.Если вы смотрите на вещи как на объекты, то подкатегории действительно являются просто объектами категории.Так что положите их в одну таблицу.Структура таблицы 1 будет проще спроектировать и разработать запросы для.

1 голос
/ 28 сентября 2011

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

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

0 голосов
/ 28 сентября 2011

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

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

Это типично для таблицы сотрудников. Супервайзер - это еще одна запись сотрудника.

...