2010-12-17 92 views
-2

我有一些项目,每个项目都有一个类别和一个子类别。在mysql中组织这个最好的方法是什么?如何在mysql表中进行组织?

+0

显示你当前的代码,你尝试过的,看起来像你只是想让我们为你做任何尝试。 – Jakub 2010-12-17 16:29:09

+0

我现在没有任何东西.... – coolboycsaba 2010-12-17 16:30:19

+0

我的第一个想法是在每一行添加两列,一个用于猫和子猫,但我认为这不是最理想的方式...... – coolboycsaba 2010-12-17 16:31:41

回答

0
categories 
----------- 
id 
title 
description 

subcategories 
------------- 
id 
title 
description 
category_id 

items 
----------- 
id (*i had misspelled id as 'if'. corrected it here) 
title 
description 
subcategory_id 
+0

什么意味着如果? – coolboycsaba 2010-12-17 16:38:21

+0

你将如何储存:工程 - >硬件 - > DIY工具 – 2010-12-17 16:56:03

+0

@Taz;我没有考虑到这一点,因为它没有被指定,但可以添加'child_id'到子类别表。 – mike 2010-12-20 13:22:06

2

首先,你有一个很大的决定。你会设计你的数据库,以便只有两个级别的类别?或者你会在未来允许两个以上的级别吗?

如果您愿意接受类别和子类别的永久限制,则可以添加两个表格。类别将列出允许的类别。子类别将列出允许的子类别以及它们所属的类别。而你的数据表将只包含子类别。 (如果没有关于其名称以外的其他类别的信息,则可以免去类别表格,并且只需在子类别表格中包括类别名称。)

如果您想要允许任意数量的级别,您将拥有只有一个类别表。每行都有类别名称和另一列与父类别。您的数据表格仍将包含单个类别列。

3

创建一个表

catID 
CategoryName 
ParentCategory ....any other fields 

相关类别字段将存储父类,如果任何的CATID。 或

CategoryTable 
catID 
CategoryName 

CategoryRel Table 
---------------------------------- 
ID 
catID 
SubcatID 

其中CATID和subCatID是从类别表的ID。

+0

第一个例子就是好的。它允许多个层次,所有需要的只是一个表格。第二个更复杂,不合理。 – s3v3n 2010-12-17 16:43:19

+0

@ s3v3n其次是复杂的,但有些人可能会说先不规范? – 2010-12-17 16:45:33

+0

使用这个如何可以显示主类别中的每个项目? – coolboycsaba 2010-12-17 16:48:27