1

想象一下,各種不同產品的商店。每個產品有一個category與許多subcategories。一個可以只有一個子類別,而另一個可以有三個子類別。從亞馬遜的例子:製作多個類別物品數據庫結構的最佳方式

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

所以:顯示器有一類一級

Electronics, Computers & Office > Monitors 

二類水平

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的數據很難實現,因爲我們不知道一個項目有多少個子類別。

這些方法是正確的嗎?我應該使用哪一個或有更好的方法來做到這一點?對不起,如果這是不相關的問題。謝謝!

+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桌(對象)。再it'i只是我的觀點。 謝爾蓋

+0

的好主意並且如果你想要第五個子類別?通過自引用,您可以擁有無​​限數量的子類別,而無需更改設計。 – BitAccesser

相關問題