我正在为博客设计数据库,博客有类别和子类别。 每个博客只有一个类别(可能是类别或子类别)。类别和子类别在相同或不同的表?
我不觉得它是正确存储在不同的数据库表中的类别和子类别,所以这个问题是:在相同或不同的表
必须的类别和子类别?
我将如何设计数据库表来实现这一目标?
我正在为博客设计数据库,博客有类别和子类别。 每个博客只有一个类别(可能是类别或子类别)。类别和子类别在相同或不同的表?
我不觉得它是正确存储在不同的数据库表中的类别和子类别,所以这个问题是:在相同或不同的表
必须的类别和子类别?
我将如何设计数据库表来实现这一目标?
惯常做法
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
它只是取决于如果你想在这种情况下子类别后搜索。如果是的话,采取正常的做法。
首先,让我指出StackExchange site for Database Administrators更适合DB设计问题。
使用每一级表你想使通航。要么;
嵌套你的(子)类别在一个表中的所有。
这些都有各自的优点/缺点。但是,对于“仅有一个类别(可以是类别或子类别[...])”的情况,“我会说使用多个表格更容易。
然而,由于你的问题还指定您希望只使用一个,你可能要take a look at this previous answer on hierarchical data in relational database。
一些类别没有孩子,所以搜索可以基于子类别或父类别,是第二种方法在这种情况下更好?如果是的话,他们的另一种方式没有JSON? – Mathew
我会采取不同的方法。您必须将子分类保存在文本字段中,因此json是可以安全读写的格式。 – Kordi