我想在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
答案 0 :(得分:0)
您的架构可能有效,但在尝试表示分层数据时,RDBMS非常难以使用。你要么很难更新表格,要么对它进行查询会非常低效。我建议你是否要使用这些数据是考虑嵌套集模型。
http://en.wikipedia.org/wiki/Nested_set_model
http://www.evanpetersen.com/item/nested-sets.html
有一点学习曲线,但值得。
干杯
答案 1 :(得分:0)
使用每个级别的表为层次结构建模。自下而上:
费用表包含“购买”,“住宿”,“维护”等行以及指向“所有权”表的“ID”字段的字段。
Ownership表包含ToBuy和ToLet行以及指向BuildingType表的ID字段的字段。
BuildingType表包含Residential和Industrial行以及指向AssetType表的字段。
AssetType表包含行Property和其他内容。
等等。
这称为3普通形式建模。