1

さまざまな種類の商品がすべて入っているショップを想像してみてください。各製品にはcategoryがあり、多くはsubcategoriesです。 1つはサブカテゴリを1つしか持たず、もう1つはサブカテゴリを3つ持つことができます。アマゾンからの例:だから複数のカテゴリを作る最良の方法アイテムデータベースの構造

Electronics, Computers & Office 
    Musical Instruments 
     Guitars 
      Electronic Guitar 
      Acoustic Guitar 
    Monitors 
    Computers & Tablets 
     Tablets 
     Laptops 
     Desktops 
      Gaming 
      Home 
      Work 

モニターが持っている1つのカテゴリレベル

Electronics, Computers & Office > Monitors 

2カテゴリレベル

Electronics, Computers & Office > Computers & Tablets > Tablets 

そして電子ギター三つのカテゴリレベル

Electronics, Computers & Office > Musical Instruments > Guitars > Electronic Guitar 

質問は(は柔軟性、メンテナンス、アクセシビリティなどを考慮して)このような構造を実現するための最良の方法は何かありますか?

Categories table 
------------------------------------------------------- 
| id | title       | caregoty_id | 
------------------------------------------------------- 
| 1 | Electronics, Computers & Office | null  | 
| 2 | Musical Instruments    | 1   | 
| 3 | Guitars       | 2   | 
| 4 | Electronic Guitar    | 3   | 
| 5 | Acoustic Guitar     | 3   | 
| 6 | Monitors       | 1   | 
| 7 | Computers & Tablets    | 1   | 
| 8 | Tablets       | 7   | 
| 9 | Laptops       | 7   | 
------------------------------------------------------- 

あなたは自分自身との関係を持っている唯一のテーブルがあると見ることができるように:どこか私は、この構造を見ました。私はそれが正しい方法であるかどうかわかりません。私はこのアイディアを持って行くべきですか、それともCategoriesテーブルをcategores1, categories2, categories3 ...のようなテーブルにすることでより先を見越してやるべきですか?One To Manyの関係です。より多くのサブカテゴリが私が持っているより多くのテーブル。しかし、どれくらいのサブカテゴリがあるのか​​わからないので、SELECTのデータは難しいと思います。

これらの方法は正しいですか?どちらを使うべきですか、それとももっと良い方法がありますか?無関係な質問であれば申し訳ありません。ありがとうございました!ビューのit'iちょうど私のポイント.Again私の意見で

+0

に対処するための最善のアプローチであることがわかりました。各カテゴリに列を使用する場合。あなたは最大限に制限されています。私はトップレベルに '0'を使用し、ヌル値を許可する必要はありません。 'category_id'の' id'を数えることでサブカテゴリの数を取得します。 – BitAccesser

+0

@BitAccesser 0との良いアイデア、 –

答えて

0

Nested Set Modelは、自身の関係で、あなたは正しい軌道に乗っている階層データ Categories model

Categories table

0

我々はそれが必要SQLの話をしている場合は、次のようになります...

Table(object): Electronics&Computers & Office 
Table(object):Musical Instruments 
    Guitars 
Table(object):Monitors 
Table(object):Computers & Tablets 
    Tablets 
    Laptops 
    Desktops 
    Table(object):Desktops 
     Gaming 
     Home 
     Work 

完全5つのテーブル(オブジェクト)。 セルゲイ

+0

そして5番目のサブカテゴリが必要な場合は?自己参照機能を使用すると、デザインを変更することなく、無制限にサブカテゴリを作成できます。 – BitAccesser

関連する問題