1

私には別の状況がありa categoryます。これをどのように設計すればよいですか?a sub categorymore than one category

以下のツリー構造は、私が推測する私の問題を解決しません。文字列として実行する必要がありParentCategoryId、その中に複数のカテゴリIDを含めることができます。次に、親カテゴリを解決するための計算を行いますか、それとも別の解決策をアドバイスしますか?この問題を解決するための最適な解決策は何ですか?

--Category--

Id
ParentCategoryId
CategoryName

前もって感謝します、

4

2 に答える 2

2

このための標準SQLソリューションはクロステーブルです。次のように、categoriesとcategories_xの2つのテーブルがあります。

categories
+------------+------------+
|categoryId  |name        |
+------------+------------+
|1           |foo         |
+------------+------------+
|2           |bar         |
+------------+------------+
|3           |huh         |
+------------+------------+

categories_x
+------------+------------+
|categoryId  |parentId    |
+------------+------------+
|3           |1           |
+------------+------------+
|3           |2           |
+------------+------------+

カテゴリ3の親を取得するには、SQLクエリは次のようになります。

SELECT categoryId, name 
  FROM categories 
  WHERE categoryId IN (SELECT parentId FROM categories_x WHERE categoryId = 3)
于 2012-07-21T14:20:59.027 に答える
1

ジョン・クラークが言ったことに加えて、次のようなすべてのカテゴリの事前計算されたテーブルを用意することもお勧めします。

Item Direct Categories
+------------+------------+
|itemId      |categoryId  |
+------------+------------+
|1           |1           |
+------------+------------+
|3           |2           |
+------------+------------+

その後

Item All Categories
+------------+------------+
|itemId      |categoryId  |
+------------+------------+
|1           |1           |
+------------+------------+
|3           |2           |
+------------+------------+

最初のアイテムではアイテムのカテゴリのみを保存しますが、2番目のアイテムでは、各アイテムをカテゴリのスーパーカテゴリに関連付けるため、アイテムにカテゴリがあるかどうかを1つのクエリで確認できます。か否か。

于 2012-07-21T14:26:40.807 に答える