制作多类别项目数据库结构的最佳方法

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 是处理分层数据的最佳方法