我已經構建了一些產品數據庫,但我從不真正滿意數據庫的效率。我的最好的辦法仍然是有一個產品表,一個類別表,然後一個關係表,即:最高效的分層產品表
產品表:
id product_name data
1 Some prod More info...
2 Another prod Even more...
分類表:
id parent_id cat_name
1 0 Main cat 1
2 1 Sub cat 1
3 1 Sub cat 2
4 3 Sub sub cat 1
5 0 Main cat 2
關係表:
id prod_id cat_id
1 1 2
2 1 4
3 2 5
etcetera...
這使得它很容易檢索產品,也很容易擁有e產品分配給多個類別。
但是,創建類別列表的結構並不像我想的那麼簡單。首先,我需要循環主要類別,然後相應地調用所有子級。我只想顯示已分配產品的類別,但當然如果包含產品,我還需要顯示所有父類別。這導致大量的查詢,連接和條件例程來呈現當前類別。我想知道是否可能有更有效的結構方法解決這個問題?你不需要寫我的代碼,我只是想知道可能有什麼更好的原則?
MySQL不支持遞歸函數,所以它不太適合存儲分層數據的鄰接列表模型。您應該考慮重構您的數據以使用嵌套或封閉表。請參閱[本答案](http://stackoverflow.com/a/192462/623041)瞭解更多信息。 – eggyal
@eggyal作爲旁註不是支持遞歸函數,但是具有固定的遞歸深度(默認設置爲0)? –
或者您可以使用支持'WITH'和分層結構的數據庫平臺。 – podiluska