制作多类别项目数据库结构的最佳方法
Best way to make multiple categories item database structure
想象一家拥有各种不同产品的商店。每个产品都有一个 category
和许多 subcategories
。一个只能有一个子类别,而另一个可以有 3 个子类别。来自亚马逊的示例:
Electronics, Computers & Office
Musical Instruments
Guitars
Electronic Guitar
Acoustic Guitar
Monitors
Computers & Tablets
Tablets
Laptops
Desktops
Gaming
Home
Work
因此:监视器 有一个类别级别
Electronics, Computers & Office > Monitors
平板电脑 两个类别级别
Electronics, Computers & Office > Computers & Tablets > Tablets
和电吉他三个类别级别
Electronics, Computers & Office > Musical Instruments > Guitars > Electronic Guitar
问题是实现此结构的最佳方法是什么(考虑到灵活性、维护性、可访问性等)?我在某处看到了这个结构:
Categories table
-------------------------------------------------------
| id | title | caregoty_id |
-------------------------------------------------------
| 1 | Electronics, Computers & Office | null |
| 2 | Musical Instruments | 1 |
| 3 | Guitars | 2 |
| 4 | Electronic Guitar | 3 |
| 5 | Acoustic Guitar | 3 |
| 6 | Monitors | 1 |
| 7 | Computers & Tablets | 1 |
| 8 | Tablets | 7 |
| 9 | Laptops | 7 |
-------------------------------------------------------
如你所见,只有一个table与自身有关系。我不知道这是否是正确的做法。我应该接受这个想法,还是应该通过使 Categories
table 像: categores1, categories2, categories3 ...
他们有 One To Many
关系的地方,以更先发制人的方式来做到这一点。更多子类别更多 tables 我会有。但我认为很难 SELECT
从他们那里获取数据,因为我们不知道一件商品有多少个子类别。
这些方法正确吗?我应该使用哪一个或者有更好的方法吗?对不起,如果这是无关紧要的问题。谢谢!
在我看来,如果我们谈论 SQL,它应该看起来像这样...
Table(object): Electronics&Computers & Office
Table(object):Musical Instruments
Guitars
Table(object):Monitors
Table(object):Computers & Tablets
Tablets
Laptops
Desktops
Table(object):Desktops
Gaming
Home
Work
总共 5 个表(对象)。同样,这只是我的观点。
谢尔盖
发现 Nested Set Model
是处理分层数据的最佳方法
想象一家拥有各种不同产品的商店。每个产品都有一个 category
和许多 subcategories
。一个只能有一个子类别,而另一个可以有 3 个子类别。来自亚马逊的示例:
Electronics, Computers & Office
Musical Instruments
Guitars
Electronic Guitar
Acoustic Guitar
Monitors
Computers & Tablets
Tablets
Laptops
Desktops
Gaming
Home
Work
因此:监视器 有一个类别级别
Electronics, Computers & Office > Monitors
平板电脑 两个类别级别
Electronics, Computers & Office > Computers & Tablets > Tablets
和电吉他三个类别级别
Electronics, Computers & Office > Musical Instruments > Guitars > Electronic Guitar
问题是实现此结构的最佳方法是什么(考虑到灵活性、维护性、可访问性等)?我在某处看到了这个结构:
Categories table
-------------------------------------------------------
| id | title | caregoty_id |
-------------------------------------------------------
| 1 | Electronics, Computers & Office | null |
| 2 | Musical Instruments | 1 |
| 3 | Guitars | 2 |
| 4 | Electronic Guitar | 3 |
| 5 | Acoustic Guitar | 3 |
| 6 | Monitors | 1 |
| 7 | Computers & Tablets | 1 |
| 8 | Tablets | 7 |
| 9 | Laptops | 7 |
-------------------------------------------------------
如你所见,只有一个table与自身有关系。我不知道这是否是正确的做法。我应该接受这个想法,还是应该通过使 Categories
table 像: categores1, categories2, categories3 ...
他们有 One To Many
关系的地方,以更先发制人的方式来做到这一点。更多子类别更多 tables 我会有。但我认为很难 SELECT
从他们那里获取数据,因为我们不知道一件商品有多少个子类别。
这些方法正确吗?我应该使用哪一个或者有更好的方法吗?对不起,如果这是无关紧要的问题。谢谢!
在我看来,如果我们谈论 SQL,它应该看起来像这样...
Table(object): Electronics&Computers & Office
Table(object):Musical Instruments
Guitars
Table(object):Monitors
Table(object):Computers & Tablets
Tablets
Laptops
Desktops
Table(object):Desktops
Gaming
Home
Work
总共 5 个表(对象)。同样,这只是我的观点。 谢尔盖
发现 Nested Set Model
是处理分层数据的最佳方法