在电子商务商店的关系数据库中表示嵌套子类别的最佳方式是什么

what is the best way to represent nested subcategories in relational database for say ecommercee store

我有一个类别 A,它有一些子类别 a、b、c,而 a、b、c 又可以有多个子类别。

我正在考虑查找 table 所有类别及其 ID(ID 名称)

另一个 table 将使用其 ID 将类别映射到其子类别 1 > [1,2,3], 2 > [7,8,9]

把它想象成一个电子商务商店,我们 select 一个类别,然后它可以有多个子类别等等..

对于这个特定的用例,想要确认这是否是正确的关系设计。

类别和 sub-categories 是同一实体 类别。您的实体与自身有关系,您可以表示为:

category [parent] (0, n) - (0, 1) category [child]

A parent category can have 0 to many child categories. A child category can have 0 or 1 parent category.

Of course, if a "child category" has no parent, it isn't really a "child" category.

这为我们提供了左侧 (parent) n(许多)和左侧 1 的最大基数右侧 (child)。 “一对多”(或“多对一”)关系意味着添加一个外键child 实体 中(到最大基数为 1 的一侧)。由于 类别 可能没有 parent,此列可以为空。

结论: 在您的类别中添加一个可为 null 的列 table,其自身具有外键约束。

您的 table 可能如下所示:

id parent_id ...
1 NULL ...
2 NULL ...
3 1 ...
4 2 ...
5 2 ...
6 2 ...
7 3 ...
8 5 ...

其中给出了以下类别树:

├──1
│  └──3
│     └──7
└──2
   ├──4
   ├──5
   │  └──8
   └──6