2012-12-05 71 views
0

我想爲電子商務項目設計一個數據庫。設計一個電子商務應用程序 - 複雜的EAV

當前模型是類別(其中有一個外鍵)和產品(其中有一個fk到一個類別)。我現在想要實現的是自定義屬性。

本質上,我希望能夠動態指定給定類別的屬性。例如,在「監視器」類別中,我希望能夠指定此類別的產品將具有「解決方案」屬性。請注意,這是我想動態做的事情 - 我不想在任何屬性中進行硬編碼。這個明顯的解決方案是使用EAV。然而...

當用戶導航到給定的類別時,我需要能夠讓他們根據自定義屬性指定和過濾。換句話說,我想讓用戶導航到監視器類別並指定他們只想看到'resolution'='1080p'的監視器。那麼,這是它變得複雜的地方。我需要知道,只是基於一個類別,可用的屬性(如「分辨率」),以及它們具有的可能值(如「1080p」)。

我不能爲我的生活弄清楚一個合適的模型......任何人都可以指向正確的方向嗎?

注:我目前使用MySQL,但我絕對可以開放其他選項。例如,我知道NoSQL dbs提供了N個用戶定義文件的能力(因爲你只是存儲任意數據),所以如果MySQL甚至SQL都不能提供一個合理優雅和合理高效的解決方案,那麼我是完全的願意考慮其他技術。

回答

1

你可以嘗試創建一個表,用於FK,另一個字段的自定義選項名稱和另一個字段的自定義選項值的字段,這樣的:

id = 1; 
category_id = 1; // FK 
custom_option = "resolution"; 
custom_value = "1080p"; 

id = 2; 
category_id = 1; 
custom_option = "touch sensitive"; 
custom_value = "0"; // 1=Yes/0=No 

所以,當你的客戶瀏覽監控類別,數據庫可以返回這個類別特殊的自定義選項

相關問題