想象一个商店有各种不同的产品。每个产品有一个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
关系?子类别越多,但是很难从它们中提取数据,因为我们不知道一个项目有多少子类别。
这些是正确的吗?
我应该使用哪一种方法,或者有更好的方法吗?
2条答案
按热度按时间2jcobegt1#
发现
Nested Set Model
是处理层次数据的最佳方法fykwrbwg2#
在我看来,如果我们谈论SQL,它应该看起来像这样...
总共5个表(对象)。再说一次,这只是我的观点。谢尔盖