SQL 架构分析:AdventureWorks 的 ProductCategory 中循环的目的是什么?

Analysis of SQL Schema: what is the purpose of loop in ProductCategory of AdventureWorks?

我想了解 ProductCategory table 中循环的用途。 AdventureWorks 是 Microsoft 提供的示例数据库 here。为什么 AdventureWorks 的 ProductCategory table 中有一个循环?

图表来自 Microsoft SQL Server Management Studio 其中循环在右侧

图表(现在称为参考图,在层次结构模式下,由 Db Vis 生成) 其中循环在右下角

我假设循环的存在表明产品类别是分层的。如果您查看 table 定义,您会看到以下两个字段,这有点提示我们:

ProductCategoryID
ParentProductCateogoryID

如果我没理解错的话,这些线通常表示父外键关系。这些关系还指出了我们可以 两个 table 连接在一起的地方。在 ProductCategory table 的情况下,我们实际上可以使用自连接将此 table 连接到自身。这就是我们查询类别层次结构的方式。