2010-09-20 105 views
0

我正在爲我的朋友庫創建一個軟件。現在我在書本和電影的數據庫中有一張桌子,但可以說用戶想要添加CD。然後,我不得不讓用戶在數據庫中爲CD創建一個表。到目前爲止,設計的目標是爲數據庫中的每個表創建一個類,包含字段,以及用於在數據庫中插入和更新數據的方法(c#和mysql)。我將如何繼續爲數據庫中的所有表製作一個「常規」類,而不是針對我現在正在執行的每個特定類。爲數據庫中的每個表格創建一個類

我正在尋找模式或類似的名稱,而不是一個完整的教程在答覆。

謝謝:)

+1

你在做什麼很好。這基本上是每個ORM所做的。我不會把所有的表合併成一個單獨的對象(你會如何表示關係?)。看看opf3(http://opf3.codeplex.com/)這是一個用於MySQL + .NET的ORM – halfdan 2010-09-20 09:44:10

+0

將所有表合併成一個對象就是我所要求的。有沒有一個模式的名稱,以便我可以谷歌?我代表邏輯層中的關係,不知道這是否是這樣做的。在邏輯層中,我把數據庫層類一起拼湊起來。 – Johannes 2010-09-20 09:48:19

+0

哎呀,那是一個錯字。我的意思是說:「我不會合並..」 – halfdan 2010-09-20 09:49:10

回答

0

您可以使用地圖或詞典來做到這一點。簡單地說,使用名稱/值對。但是這對你正在做的事情來說是一個很糟糕的設計。這會讓你感到困難並且管理得也很好。

我知道你在想爲所有的表格重複編寫相同的方法。對於這種情況,你應該使用某種ORM(對象關係映射)。對於Java,你可以使用Hibernate,Toplink。 NHibernate是.Net中Hibernate的一個端口。

+0

謝謝,我會研究一下。我並不擔心必須一遍又一遍地編寫相同的方法,但是如果用戶向他的庫中添加了一些新的東西,而我沒有類/表格,會發生什麼情況。 – Johannes 2010-09-20 09:53:06

+0

這些類也可以自動生成。您可以使構建過程的自動生成部分,以便您的構建始終與構建目標所針對的數據庫兼容。 – 2010-09-20 09:54:56

0

你可以使用一些叫做STI的東西:單表繼承。我猜這適合於這樣的地方,其中一些屬性是共享的,而另一些則是獨立的。

所以你可以創建一個表格,把它叫做LibraryItem,它有一個類型,它可以是CD, book, dvd和一個標題,還有一些字段可以填充某些類型併爲其他類型填充。

通常最好爲每個表創建單獨的表,但有時STI方法更加靈活。您可以輕鬆添加新的類型:例如LP或VHS,只要它不會引入太多新的屬性/字段。

相關問題