如果給出問題規範,如何判斷它是數據庫設計問題還是類設計(面向對象設計)問題?如何判斷規範是使用面向數據庫的方法還是面向類設計的方法
0
A
回答
1
如果您正在使用數據庫並創建域對象,則它們都是。數據庫設計和類設計是兩回事,如果你使用數據庫和類,兩者都是必需的。這不像你選擇一個或另一個。
這是一個ORM進場的地方。當數據層從數據庫中檢索信息時,一種典型的方法是將關係數據轉換爲您的域對象並將其傳遞給業務邏輯層,以便應用程序的其餘部分可以處理域對象而不是關係模型。
然後,當持久化數據時,您的ORM會做相反的事情:它需要一個域實體並將其重新轉換爲可以保存到數據庫的關係結構。
注:我在這裏假設一個關係數據庫。如果沒有,則將關係替換爲您正在使用的任何類型的持久層。
2
我想到的是,在OOP中,類(對象)包含方法,而數據庫僅僅是關係和值的集合。 因此:
如果您可以說一個問題是關於規範中的「事物」如何相互關聯,那麼您就有數據庫設計問題。
如果是關於規範中的「事物」能做什麼,那麼您將沿着面向對象的編程進行更多的建模。
1
我認爲應該解決的面向數據庫問題的唯一規範是那些專注於結構化數據類型操作的規範。如果您的規範是關於「存儲客戶記錄」,「刪除訂單記錄」,「將記錄匹配規格的價格值從12更改爲33」,那麼您就擁有一個數據庫項目。
自從我工作的Cobol團隊僱傭了系統~~無政府主義分析師以來,我還沒有看到過那種問題規範。幾乎我所做過的每個項目的要求都不是關於數據如何存儲的,而是數據的含義。
如果您的要求是「用戶可以創建客戶,客戶可以下訂單,訂單包含產品,訂單可以有交付方式,付款方式和狀態,狀態遵循業務流程」,則您有OO問題。您可能需要一個存儲機制 - 並且數據庫將是一個很好的選擇 - 但您擁有的業務邏輯不能通過創建結構化數據類型和關係來完成。
相關問題
- 1. 判斷祖先是Ruby中的類還是模塊的方法?
- 2. 如何判斷照片是以橫向還是縱向拍攝的? JPEG .NET元數據方向
- 3. 如何判斷的方法是一種通用的方法
- 4. 面向對象設計方法
- 5. 如何判斷指針是指向堆棧還是指向堆?
- 6. 不是面向對象的buildMaxHeap方法
- 7. 在RSpec中檢查URL方向的規範方法是什麼?
- 8. 面向對象設計:使用方法參數vs屬性
- 9. 正式方法 - 代數規範vs面向對象
- 10. 面向對象的方法是什麼? (或你的方法?)
- 11. 面向對象的數據庫設計
- 12. 如何判斷庫是COM還是DCOM?
- 13. 爲使用面向方面的編程的方法提供數據
- 14. 面向對象的方法使用ColdFusion
- 15. 如何判斷x或y方向是最佳方式?
- 16. 面向Android計劃的正確方法是什麼?
- 17. 如何判斷一個方法是應該進入數據定義類(DDC)還是實現類
- 18. In App Purchase服務器模型是面向設備還是面向用戶的?
- 19. 數據庫設計決策:規範化還是重複?
- 20. Rails :(設計)面向新用戶的兩種不同方法?
- 21. 什麼是非規範化mysql數據庫的好方法?
- 22. 如何判斷UIScrollView的方向是否會滾動?
- 23. 什麼是在Ember.js中重定向的規範方法?
- 24. 什麼是面向方面的編程?
- 25. 如何判斷方法「performSegueWithIdentifier:sender:」?
- 26. 判斷方法的語法
- 27. 使用C庫的面向對象應用程序的方法
- 28. 如何判斷JavaScript是否會重定向頁面?
- 29. 哪一個更好的面向對象方法的OOP設計
- 30. 設計方法:過程還是帶有巨大數據的Java?