1

我想在 sql db 中创建以下层次结构。这就是我所拥有的。它是正确的还是有更简单的方法。另外我如何查询它以显示相同的层次结构?

Services
    Property
        Residential
            To let
                Purchase
                Accommodation
                Maintenance
                Plumbers
                Electricians
                Carpenters
       Industrial
    To let
                 Purchase
                 Accommodation
                 Maintenance
                 Plumbers
                 Electricians
                 Carpenters

桌子CategoryType

CategoryTypeID CategoryName
1   Services
2   Products
3   Main
4   MainSub
5   Sub
6   Sub1

桌子Category

CateogryID      CategoryName   CategoryTypeID  ParentID
1       Property    Service
2       Residential Main        1
3        To let     MainSub 2
4       Purchase    Sub     3
5       Accommodation Sub       4
4

2 回答 2

0

您的模式可能有效,但众所周知,在尝试表示分层数据时,RDBMS 很难使用。您要么很难更新表,要么查询它的效率非常低。如果您要使用此类数据,我的建议是考虑嵌套集模型。

http://en.wikipedia.org/wiki/Nested_set_model

http://www.evanpetersen.com/item/nested-sets.html

有一点学习曲线,但这是值得的。

干杯

于 2012-08-16T18:38:47.517 回答
0

使用每个级别的表对层次结构进行建模。自下而上:

Expense 表包含 Purchase、Accomodation、Maintenance 等行和一个指向 Ownership 表的 ID 字段的字段。

Ownership 表包含 ToBuy 和 ToLet 行以及指向 BuildingType 表的 ID 字段的字段。

BuildingType 表包含 Residential 和 Industrial 行以及指向 AssetType 表的字段。

AssetType 表包含 rows 属性和其他内容。

等等。

这称为 3 范式建模。

于 2012-08-16T19:19:32.930 回答