mysql 建立多类别项目数据库结构

gblwokeq  于 2023-01-29  发布在  Mysql
关注(0)|答案(2)|浏览(113)

想象一个商店有各种不同的产品。每个产品有一个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           |
-------------------------------------------------------

只有一个表,它与自身有关系。我不知道它是否正确。我应该继续这个想法,还是我应该用一种更先发制人的方式来做,即制作一个类似categores1, categories2, categories3 ...Categories表,其中它们有One-To-Many关系?子类别越多,但是很难从它们中提取数据,因为我们不知道一个项目有多少子类别。
这些是正确的吗?
我应该使用哪一种方法,或者有更好的方法吗?

2jcobegt

2jcobegt1#

发现Nested Set Model是处理层次数据的最佳方法

fykwrbwg

fykwrbwg2#

在我看来,如果我们谈论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个表(对象)。再说一次,这只是我的观点。谢尔盖

相关问题