相同或不同表中的类别和子类别?

时间:2016-03-05 11:32:50

标签: database database-design

我正在为博客设计数据库,博客有类别和子类别。 每个博客只有一个类别(可能是类别或子类别)。

我觉得将类别和子类别存储在不同的数据库表中是不对的,所以问题是:

  1. 必须在相同或不同的表中使用类别和子类别吗?

  2. 我如何设计数据库表来实现这一目标?

2 个答案:

答案 0 :(得分: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

这取决于你是否想在这种情况下搜索子类别。如果是,采取正常的方法。

答案 1 :(得分:1)

首先,我要指出StackExchange site for Database Administrators更多是关于数据库设计问题的主题。

已经提及@ Kordianswer,基本上有两种方法:

  1. 每个级别使用一个表,您希望可以导航。 OR;

  2. 一个表中嵌套您的(子)类所有

  3. 每个都有自己的优点/缺点。但是,对于“只有一个类别(可以是类别或子类别[...])”的情况,“我会说使用多个表格更容易。”

    但是,由于您的问题还指定您只想使用一个,因此您可能需要take a look at this previous answer on hierarchical data in relational database