質問

短質問 どう商品カテゴリーに表示される複数のカテゴリーにするのでしょうか?それは悪くないのでしょうか?

背景情報: 製品データベースの項目が好きです:

Products

  -Arts and Crafts Supplies
    -Glue
    -Paper Clips
    -Construction Paper


  -Office Supplies
    -Glue
    -Paper Clips

注接着剤、紙クリップは、両カテゴリを対象とします。 やがて二つの異なるスポットがこのカテゴリツリー 同じカテゴリIDのデータベース.なぜですか?二つの理由

  1. カテゴリーで割り当ての属性、例えば、クリップが全重量の素材、色、など。
  2. 製品の接着剤カテゴリ表示の下では、工芸品、事務所です。が期待できる-彼らは同じ実際のカテゴリIDのデータベースです。

この管理までを可能にしていま単一のカテゴリでの属性や属製品な場所で複数の場所内カテゴリのツリーです。

"を使用してい 入れ子セットモデル, ので、db構造を使用しています:

Category
----------
CategoryID
CategoryName


CategoryTree
------------
CategoryTreeID
CategoryID
Lft
Rgt

である1:MカテゴリCategoryTreeができるの複数インスタンスの指定されたカテゴリ内でのカテゴリツリーです。

あと簡単な方法が使えるモデルは、このように製品カテゴリ表示の下で複数のカテゴリー?

役に立ちましたか?

解決

私は、すべて接着剤は、両方の事務用品ののクラフト用品に適切であること。

真であるとして、これに何か問題が表示されません

他のヒント

:なぜそうのような第二のテーブルを簡素化していないが、

は、あなたが持っているもの、良い方法です

カテゴリ

ID 名前

サブカテゴリ

ID 区分 SubCategoryID

私は2つのルートカテゴリの間で子カテゴリを共有するには注意してくださいだろう将来のためけれども。時にはあなたのために管理しやすくし、顧客のために移動する可能性の方が簡単です一貫性を保つために製品のユニークな分類を作成することをお勧めします。そうしないと、あなたは事務用品から来るグルーページにしている場合、あなたは同様に他のパスを表示しないという問題がありますか?そうでない場合は、SEOのための問題であるパスを除き、二つの同一のページを持つことになります。そうした場合、そのユーザーが混乱することがあります。

最も有名な例は、Googleメールの分類を行います。Googleで有名なのユーザビリティの商品---

私はその言葉が好ましくは、"親"という言葉は、実際にこだXToOne関係...

ものといえるのかもしれませんが、 Product 多くの Categories, ので、関係するManyToMany.のみの表示が始まりカテゴリの商品---


このことは一番の問題:ない場合の数を制限の分類、表示し、サブ-カテゴリで起き:

  • 巨大なカテゴリ-製品リストは、多くの重複
  • 大深度(おそらく読む)

の興味深い点は強調表示の問題、そして想像ソリューションの最終ユーザーです。

カテゴリは、複数の親を持つようにするために、

これはよく必要になることがあります。しかし、関係なく、あなたは下のカテゴリを見つけたもの、親、そのサブカテゴリには変わりないはずます。

私は正確にこのロジックを実装し、うまく働いた実際のシステムを見てきました。

の編集

あなたの質問に答えるために、私は私が示唆していたモデルは、あなたが想像として、限定ではないと思います。基本的には、ツリーの特定のブランチは、複数の親の枝の下で見ることができるが、それが発見されている場所、それは同じ子を持ちます。このことについては何も一方の分岐のいくつかの子供たちをチェリーピックし、またそれらを別の子供を作るからあなたを妨げません。

したがって、たとえば、あなたは、事務用品や趣味用品の両方の下で接着剤のカテゴリを含むことができ、あなたは接着剤の下に「クレイジー・グルー(坐剤版)」を追加した場合、それは両方に表示されます。あなたが一緒に論理的にグループ化されるかもしれない項目がありますが、その使用によって分離する必要がある場合、あなたはまだそれを行うことができます。あなたは趣味のルートの下に行く趣味の接着剤のカテゴリ、下の粘液やペーストを入れて、ではなく、オフィスのルートの下にあります。それとも、それを行うと同時に、あなたのバイヤーが内部で使われている組み合わせのカテゴリを持つことができます。何をすることはできませんが、それはあなたのビジネスモデルのオントロジーに属するどこあなたがそれを追加したら、関連するすべてのカテゴリにおける接着剤の新しいタイプを含めることを忘れている。

要するに、あなたはこの制限とはほとんど失いますが、個別に各項目を管理することの問題を避けるために構造体のビットを得ることができます。

の編集

私はモデル自体のために説得力のケースを作ったと仮定すると、実装の問題がまだあります。そこ多くのオプションがありますが、ここに行くための一つの方法です。

合成プライマリキー、ラベル、オプションの説明/詳細テキスト、および任意のSKU(または同等)を含有CatalogItemテーブルがあります。その後、双方がCatalogItemTableに拘束、子と親のIDの持つ多対多CatalogItemJoinを持っています。

親として表示された項目はカテゴリなので、SKUを持つべきではありません。唯一の子として表示された項目は、製品であるため、SKUを持つ必要があります。任意の項目が複数の親を持つことは素晴らしいです。それはちょうどそれが複数のカテゴリにありますことを意味しています。同様に、親ごとに複数の子供に問題はありません。それはそれでいくつかの製品とカテゴリの典型的なケースだろう。しかし、カテゴリのIDを指定して、その子は関係なく、そこにあなたを導いたものを親カテゴリのと同じになります。他の制約は、あなたがループを回避したいと思うことです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top