實踐中,我正在寫一個購物網站,我們有表User
和Item
。一個用戶顯然是has_many
物品(當他們被添加到他們的購物籃時),但是該物品,它belongs_to
a User
,即使許多用戶在他們的購物籃中會有相同的物品?另外,如果我想要一個用戶已添加到他們的購物籃中的物品列表,而且他們已經查看過的物品列表(用於根據搜索提出建議)會怎樣?如果我想要一些「通過」表格:Basket
和Viewed
?簡單的Ruby on Rails數據庫設計
回答
當你有這麼多的一對多的關係,您可以使用HABTM模式:
Class User...
has_and_belongs_to_many :items
然而,大多數的網店使用orderlines時間跟上用戶所購買的物品。這意味着'用戶''has_many''命令行','項目''has_many''命令行','命令行''belongs_to''用戶'和'項目'。
也許您的訂單將只是項目的副本,並且不會有直接鏈接,因爲您不想在訂單處理完成後更改訂單。這真的取決於你的商店的重點哪個方案適合你的需求。
試着在網上找到一些例子,想想你想如何處理物品,訂單和籃子。
看看這本書[帶有Rails的敏捷Web開發](http://pragprog.com/book/rails4/agile-web-development-with-rails)。這本書可以幫助你建立一個購物網站並解釋上面答案中提到的訂單行。 – 8bithero 2013-02-16 21:55:12
我用來分開不一樣的東西,即使這種關係是一對一的。所以首先我會推薦籃子用戶(1:1關係)。
之後,籃子包含許多項目和項目可以在多個籃子(m:n關係)。確保,也許用戶喜歡多次購買相同的物品。
視圖可以實現爲用戶和項目之間的鏈接表:用戶有很多視圖,項目有很多視圖,但一個視圖總是鏈接到一個用戶和一個項目。
感謝您提供關於多個項目的提示 – user1802713 2013-02-16 22:21:40
- 1. Ruby on Rails的數據庫設計
- 2. Ruby on Rails的數據填充設計
- 3. Ruby On Rails數據庫
- 4. Ruby on Rails + Filemaker數據庫
- 5. Ruby on Rails的設計寶石哪裏是數據庫
- 6. Ruby on Rails的:設計
- 7. Ruby on Rails數據庫和應用程序設計
- 8. Ruby on Rails:設計用戶
- 9. Ruby on Rails設計用戶
- 10. 設計問題Ruby on rails
- 11. Ruby on Rails - 設計確認
- 12. Ruby on Rails 3簡單分組和計數
- 13. Ruby on Rails的:從數據庫列
- 14. Ruby on Rails的對象數據庫
- 15. Ruby on Rails現有的Sybase數據庫
- 16. Ruby on Rails的數據庫遷移
- 17. Ruby on Rails的錯誤數據庫
- 18. Ruby on Rails的 - 從開發數據庫
- 19. 數據庫在Ruby on Rails的
- 20. Gerrit的Ruby on Rails數據庫部署
- 21. Ruby on Rails中的數據庫查詢
- 22. Ruby on Rails的 - 存儲PARAMS數據庫
- 23. 簡單的Ruby on Rails按鈕動作
- 24. Ruby on Rails中的簡單鬧鐘4
- 25. Ruby on rails簡單的關係has_and_belongs_to_many
- 26. Ruby on Rails簡單的網站佈局
- 27. 簡單的Ruby on Rails教程
- 28. 簡單的Ruby on Rails應用程序
- 29. 簡單的數據庫設計
- 30. 簡單的數據庫表設計
如果您的查看是「最近查看的」,則可以爲臨時項目創建多態關聯。爲這些臨時項目創建一個單獨的模型,它需要包含user_id和item_id。 – kobaltz 2013-02-16 20:49:10