web-dev-qa-db-ja.com

データベーススキーマとモデルクラスでカテゴリを処理する方法

Eコマースソリューションを開発しようとしていますが、カテゴリ管理の問題に固執しており、さらに先に進む方法がわかりません。

参照してください、カテゴリには親カテゴリがあり、ルートカテゴリに到達するまで、戻り値は別の親を指すこともできます。次のデータベーススキーマを設計してみましたが、

それが正しいかどうか教えてください?

enter image description here

またはこのシナリオをよりよく理解するのに役立つカテゴリと親カテゴリに関するチュートリアルはありますか?

4
Pankaj Upadhyay

クラシックDBの回答:「場合によります」

質問:

  • 親でないかどうかに関係なく、任意のカテゴリにアイテムを追加できますか?
    つまり、カテゴリにはサブカテゴリまたはアイテムのいずれかを含めることができますが、両方を含めることはできませんか?

はいの場合、現在のテーブルはOKです

いいえの場合は、別の自己参照CategoryParentテーブルを用意してください。現在のカテゴリはその子になります。

これにより、アイテムは最下位レベルのカテゴリに制限されますが、カテゴリの階層が可能になります。

3
gbn

階層カテゴリを処理するためのテーブル設計は正しいです。これは、ツリーが1つのブランチに沿ってどのくらい深いかを正確に予測する方法がない状況を処理できる汎用設計です。

設計で検討する必要があるのは、リレーショナルDBMSで階層データをナビゲートする実用性を支援するために修正を加えるかどうかです。

この質問に対する私の回答 では、カテゴリ階層の設計について説明しました。

この他の質問に対する私の答え 私は、階層データを-少なくとも読み取り側で-ネストされたセット訪問数

5
Joel Brown

列CategoryParentがcategory_idを参照する外部キーであると想定し、CategoryParent列がNULLを許可すると想定しても、問題はありません。

明確にするために、外部キー列に_fkを追加することをお勧めします。また、CategoryParentの主キーとして正確なdatatypがあることも確認してください。

Blockquoteこのシナリオをよりよく理解するのに役立つカテゴリと親カテゴリに関するチュートリアルはありますか?ブロッククォート

あなたのケースは典型的な自己参照または階層関係です。このケースは、組織図など、カテゴリ以外の多くのケースに存在します。

同様の例がここにあります: DataModeling

0
NoChance