2013-05-09 81 views
2

我想弄清楚爲應用程序設計這個數據庫的最佳(最合邏輯的)方法,該程序將允許用戶執行(或多或少)CRUD待辦任務,然而,它們被組織成硬編碼類別。分類待辦事項應用程序的數據庫設計

假設你即將去你最喜歡的百貨公司。你需要打女性的地板,並拿起她的女朋友她訂購的鞋子和匹配的衣服(這是在商店的另一邊,但在同一層。)然後,你需要去男孩系爲你的弟弟,並拿起兩條不同的短褲,一條褲子和一雙新鞋。

婦女的地板和男孩的部門是購物清單項目將落入類別的兩個例子。

所以它看起來像這樣:

* Women's Floor 
    1 Pair Shoes 
    1 Dress 

* Boy's Department 
    2 Shorts 
    1 Pant 
    1 Pair Shoes 

所以我的數據庫設計可能看起來是這樣的...

Categories: id, title 
ListIndex: id, user_id 
ShoppingList: id, listindex_id, category_id, item_id, order, active 
Items: id, name, category_id 

分類將男孩的部,女子自由體操等,用戶也不會能夠創建新類別,但是我們可以預先定義類別

ListIndex將作爲一個整體提供與購物清單的主關係。

ShoppingList將是實際的購物清單(主動將0/1,因此用戶可以有一種方式來提醒自己,他們買了項目/把它放在自己的車。)

項目將有一個可用於投入待完成任務的項目列表。我們將在後臺對這些進行分類。

這是正確的做法嗎?

+0

這聽起來很好,除了我不明白爲什麼ListIndex必要? – jokklan 2013-05-09 21:38:58

+0

@jokklan因此,每個列表總共有一個主列表。 – 2013-05-09 21:43:41

+0

你的意思是一個主清單是什麼意思?我敢肯定你應該可以做任何你想要的而沒有ListIndex,它看起來像不必要的膨脹。 – 2013-05-09 23:22:54

回答

4

希望我正確理解問題的描述,但我想這裏有一種方法可以將數據庫和模型放在外面。我也不認爲你需要的ListIndex:

數據庫表

Categories: id, title 

ShoppingLists: id, user_id, order, active 

Items: id, title 

ShoppingListItems: id, item_id, shopping_list_id, quantity 

CategorizedItems: id, category_id, item_id 

Users: id, name 

模型

User: 
has_many shopping_lists 

ShoppingList: 
belongs_to user 
has_many shopping_list_items 
has_many items, through shopping_list_items 

Items: 
has_many categorized_items 
has_many categories, through categorized_items 
(optional: you could query an item for the shopping lists that it is on) 
has_many shopping_list_items 
has_many shopping_lists, through shopping_list_items 

Categories: 
has_many categorized_items 
has_many items, through categorized_items 

我的想法是這樣的 -

個別種類基本上都是靜態的,這是相當直截了當。
購物清單表示用戶(通過user_id)將購買的物品清單。項目和購物清單之間的鏈接可以在名爲ShoppingListItems的連接表中進行,其中每行將列表,項目和數量之間的關係鏈接在一起。

項目很有趣,因爲在您的示例中,某個項目實際上可以分爲多個類別。即「褲子」可以在男孩/女孩/男人/女人和可能的寵物:(爲了支持,我認爲你可以使用另一個名爲CategorizedItems的連接表,基本上可以讓你查詢「特定類別的物品」或「類別項目是在「。

+0

您值得擁有一顆金色的星星。但我可以給你一個綠色檢查。感謝您的超級詳細解釋。 karma_points belongs_to mariozig。 – 2013-05-09 23:52:54

+0

非常感謝!我很感激。如果您發現我提到的任何錯誤,請發表評論。我沒有實際測試/編碼這些東西。 – 2013-05-09 23:54:24

+0

不要擔心。我或多或少地想要在概念上驗證它。而你做到了。 :) – 2013-05-09 23:59:26

相關問題