2014-01-28 78 views
0

數據庫在哪裏適合面向對象的設計?比方說,例如我有一個簡單的文章數據庫,我的用例圖有搜索文章,查看文章和創建文章的場景。面向對象設計中的數據庫?

我應該有一個文章類與類內的數據庫連接或只是一個全局數據庫類,以便其他類說用戶類可以訪問相同的連接?

我也應該使用表格作爲對象,例如文章是它自己的數據對象,然後像ArticleApi這樣的類用於CRUD操作?

另外,如果任何人有任何開始到結束的面向對象的分析和設計教程,將是偉大的。

對不起,我從程序編程實踐中獲得了這樣一個新手問題,並試圖進入軟件開發的面向對象部分。

回答

1

你沒有指定任何特定的平臺,所以它不會是一個非常準確的答案。

數據庫在哪裏適合面向對象的設計?

我猜我們在談論RDBMS吧?那麼,他們沒有。這就是爲什麼我們需要ORM software,如Hibernate for JavaDoctrine for PHP

我應該與類內或到數據庫的連接只是一個全球數據庫類,這樣其他類的文章說類用戶類可以訪問相同的連接?

我也應該使用表格作爲對象,例如文章是它自己的數據對象,然後像ArticleApi這樣的類用於CRUD操作?

基本上有對ORM架構兩種常用的方法:

  • Data Mapper,你的域對象只是普通的老物件,沒有任何依賴關係ORM /數據庫。您應該以OO方式爲您的模型建模,然後將其映射到您的數據庫中。你有一套獨立的對象(EntityManagers)來處理實際的持久性。
  • Active Record,其中您的域對象與ORM緊密耦合,並且它們自己提供一組方法來處理與數據庫相關的操作。

我個人認爲數據映射的方法是優於活動記錄,因爲它遵循SOLID原則。但是主動記錄也可能非常有用。


通常你應該記住,你的域模型(面向對象)和數據庫模型(RDBMS)是必須用不同的準則來模擬兩個不同的東西。

+1

我現在可以擁抱你,非常豐富,是的我正在談論關於RDBMS的MySQL要具體 –

0

沒有單一的正確答案 - 所有都取決於您正在構建的應用程序。對於最簡單的應用程序,您可以使用Transaction Script方法(這非常程序化)。

然後,您可以演進到Table Module - 對數據庫中的每個表使用類的方法,並且該類負責管理表中的所有數據。

對於更復雜的應用程序,您將有Domain Model(通常甚至在您擁有數據庫之前)。您需要Data Mapper將您的Domain Model類映射到Database中的表(您可以將單個類映射到多個表,反之亦然)。隨着現代的力量Object Relational Mappers領域模型的使用變得容易得多,因爲這個映射的大部分是自動完成的。 .NET中的一些工具(如Entity Framework)甚至允許您從數據庫表中生成域模型。