1

SQLデータベースに次の階層を作成したいと思います。これは私が持っているものです。それは正しいですか、それとももっと簡単な方法がありますか。また、同じ階層を表示するようにクエリするにはどうすればよいですか?

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

各レベルのテーブルを使用して階層をモデル化します。一気飲み:

Expenseテーブルには、Purchase、Accommodation、Maintenance、...の行と、OwnershipテーブルのIDフィールドを指すフィールドが含まれています。

Ownershipテーブルには、行ToBuyとToLet、およびBuildingTypeテーブルのIDフィールドを指すフィールドが含まれています。

BuildingTypeテーブルには、Residential行とIndustrial行、およびAssetTypeテーブルを指すフィールドが含まれています。

AssetTypeテーブルには、行Propertyなどが含まれます。

等々。

これは、3正規形モデリングと呼ばれます。

于 2012-08-16T19:19:32.930 に答える
0

スキーマは機能する可能性がありますが、階層データを表現しようとすると、RDBMSを操作するのが難しいことで有名です。テーブルを更新するのに非常に苦労するか、テーブルに対してクエリを実行するのは非常に非効率的です。このようなデータを使用する場合の私の提案は、入れ子集合モデルを検討することです。

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

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

少し学習曲線がありますが、それだけの価値はあります。

乾杯

于 2012-08-16T18:38:47.517 に答える