2016-03-05 2 views
0

Я разрабатываю базу данных для блога, блоги имеют категории и подкатегории. Каждый блог имеет только одну категорию (которая может быть категорией или подкатегорией).Категория и подкатегория в той же или другой таблице?

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

  1. сусло категории и подкатегории в одинаковых или разных таблиц?

  2. Как бы мне создать таблицы базы данных для этого?

ответ

1

Нормальный подход

Table A: ID, CATEGORY 
TABLE B: ID, CATEGORY_ID, SUBCATEGORY 

Просто используйте 2 таблицы.

подход с подкатегориями, относящихся к более чем одной категории

Table A: ID, CATEGORY 
TABLE B: ID, SUBCATEGORY 
TABLE C: ID, CATEGORY_ID, SUBCATEGORY_ID 

Используй это, если у вас есть подкатегории добавлены к более чем одной категории.

Другой подход

TABLE A: ID, CATEGORY, SUBCATEGORY AS TEXT (SUBCATEGORIES as JSON List. e.g. ["SUB_1", "SUB_2"]) 

Если у вас есть много подкатегорий добавлено к более чем одной категории. В этом случае просто сохраните SUBCATEGORY_ID в списке. Theen

TABLE A: ID, CATEGORY, SUBCATEGORY AS TEXT (SUBCATEGORIES_ID saved as JSON List. e.g. ["1","2"]) 
TABLE B: ID, SUBCATEGORY 

Это зависит от того, хотите ли вы искать подкатегорию в этом случае. Если да, возьмите обычный подход.

+0

В некоторых категориях нет детей, поэтому поиск может основываться на подкатегории или родительской категории, является ли второй подход лучше в этом случае? Если да, то это их другой путь без JSON? – Mathew

+0

Тогда я бы использовал другой подход. Вы должны сохранить subcategrories в текстовом поле, так что json - безопасный формат для чтения и записи. – Kordi

1

Во-первых, позвольте мне указать, что StackExchange site for Database Administrators более подробно по темам для вопросов проектирования БД.

Как @Kordi «s answer уже отмечалось выше, существует два подхода:

  1. Использование один таблица на уровне вы хотите сделать судоходным. ИЛИ;

  2. вложенности ваши (суб) категории все в один таблице.

У каждого из них есть свои преимущества/недостатки. Однако для ситуации, когда у вас «есть только одна категория (которая может быть категорией или подкатегорией [...])« Я бы сказал, что проще использовать несколько таблиц.


Однако, так как ваш вопрос также указывает, что вы хотите использовать только один, вы можете take a look at this previous answer on hierarchical data in relational database.

Смежные вопросы