【问题标题】:what is the best way to represent nested subcategories in relational database for say ecommercee store [closed]说电子商务商店在关系数据库中表示嵌套子类别的最佳方法是什么[关闭]
【发布时间】:2022-01-12 11:14:53
【问题描述】:

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

我正在考虑有一个查找表,其中包含所有类别及其 ID(ID 名称)

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

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

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

【问题讨论】:

标签: mysql database-design relational-database


【解决方案1】:

类别和子类别是同一实体类别。您的实体与其自身存在关系,您可以将其表示为:

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

一个父类别可以有0到多个子类别子类别可以有 0 或 1父类别

当然,如果“子类别”没有父类别,那么它就不是真正的“子” 类别。

这为我们提供了左侧(父级)和右侧(子级)n(许多)和 1 的最大基数。 “一对多”(或“多对一”)关系意味着在子实体(最大基数为 1 的一侧)。由于 类别 可能没有父级,因此该列可以为空。

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

您的表格可能如下所示:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    • 2019-06-09
    • 2014-01-31
    • 1970-01-01
    相关资源
    最近更新 更多