5

カテゴリのリストと、各カテゴリに関連付けられているサブカテゴリの数があります。カテゴリテーブルがCatと呼ばれているとすると、ホットカテゴリとコールドカテゴリがあり、サブキャットと呼ばれる別のテーブルがあり、次のようになります。

 ID Name
 1 Hot
 2 Cold

サブキャット

SubCatID   CATID   Name
  1       1        soup 
  2       1       rice 
  3       1       pizza 
  4       2       salad 
  5       2       fruit

デザインのパフォーマンスを考慮する必要がありますが、デザインをどのように評価しますか?より良い解決策はありますか?

(カテゴリは単なるサンプルです。カテゴリとサブカテゴリが山ほどあります。)

4

3 に答える 3

3

1つのテーブル、カテゴリにすべてを含めることができます。次に、parentIDの列があります。parentID = 0の場合、それはマスターカテゴリであり、別のIDの場合、それはサブカテゴリですか?この構造はサブサブカテゴリをサポートします...それがあなたに役立つかどうかはわかりません。

フィールドの例:

Table: category
categoryID
parentID
name

データ例:

categoryID : 1
parentID : 0
name : hot

categoryID : 2
parentID : 0
name: cold

categoryID : 3
parentID : 2
name : a soup that's cold

categoryID : 4
parentID: 1
name: a soup that's hot
于 2012-09-29T00:45:26.010 に答える
3

mysqlやsqlite(両方ともタグに含まれている)を使用していて、再帰クエリの構成を提供していない場合は、親子関係よりもネストされたセットモデルの方が適している可能性があります。

それは非常にやり過ぎかもしれませんし、目的に合わないかもしれません(読み取りよりも挿入に重い場合)が、それでも、学ぶのは楽しいので、これらを読んでください

http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

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

于 2012-09-29T00:52:32.733 に答える
2

テーブルの構造に問題はありません。これは十分に正規化されており、標準的な方法で実装されています。テーブル全体に外部キー制約を設定することをお勧めします(まだ設定していない場合)。

Zekeが言ったように、デザインは複数レベルのサブカテゴリをサポートしませんが、カテゴリとサブカテゴリのみが存在することがわかっている限り、問題ありません。

「サブサブカテゴリ」が(無限に)必要な場合は、次のような1つのテーブルが必要になる場合があります。

猫:

CatID ParentCatID Name
1     null        Hot
2     1           Soup
3     1           Coffee
4     3           Decaf Coffee
5     null        Cold
6     5           Iced Tea

Coffeeの親IDは「Hot」であり、DecafCoffeeのParentIDは「Coffee」であることに注意してください。とても暑い>コーヒー>カフェイン抜きのコーヒー。ParentCatIDがnullの場合は、トップレベルカテゴリになります。

自身のテーブルを参照する外部キーを持つことができます。したがって、ParentCatIDとCatIDの間に外部キーを作成できます。

于 2012-09-29T00:50:15.323 に答える