2013-02-16 88 views
1

每次我編程時,我都會意識到類和表之間的這種關係,或者我是在想象它。數據庫表和麪向對象類之間是否存在關係?

您可以爲每個數據庫表中的類或類每一個表,即:

tables: customer, products, order. 

    classes: customer, products, order, may have methods such as addRecord, deleteRecord, updateRecord. 

這是什麼叫什麼?對象關係?我不是DBA。

+1

這個沒有名字。你有對象,並且你有數據。數據需要進入對象和對象。這似乎是兩者之間的關係,這是因爲大多數軟件及其數據存儲都是由同一個人設計的。 – Oded 2013-02-16 12:16:55

+0

呀..例如,可能有customer_details和customer_transaction的表,但都可以從類的客戶管理。可能不是很聰明的例子,但你有想法.. – luckystars 2013-02-16 12:19:00

+0

它被稱爲ORM:對象關係映射 – 2013-02-16 23:09:26

回答

3

這一切都取決於你所使用的數據庫的類型。如果您使用的是object oriented database(OODB),則不存在任何關係,因爲對象和持久數據是相同的。舉例來說,如果你有一個Customer類,並且將它保存在一個面向對象數據庫,那麼該客戶實例什麼是存儲在數據庫中。

如果您使用的是relational database,那麼該類的實例,並在DB持久性表示,可以是同樣的事情,但很多時候他們都沒有。這是因爲大多數人使用normalization以有效的方式表示他們的數據(在關係數據庫中)。這意味着,不是每個類都有一個表,您可以有一個由多個表代表的類。在Customer例如,表現在可能是Customer(含姓名,出生日期和其他屬性),並Order(訂購指向產品在另一個表)。其原因與cardinality有關,並且Customers具有多個訂單的能力。當您的業務邏輯需要來自DB的這些信息時,數據訪問層的工作就是將數據庫中的數據(稱爲ORM)映射到您的類中。

如果使用的是另一種類型的DB的,那麼就會有類(域模型),什麼是堅持在數據庫之間不同的關係。

但是,只要這種關係有一個名字嗎?不,沒有名字。

5

作爲Bob的回答,添加以下內容。

在對象建模中,類和子類之間的關係由繼承來完成,而對象建模者知道如何使用繼承來獲得更好的優勢。關係數據模型和擴展SQL數據庫不會爲您實現繼承。你必須設計表格來給你一些相同的結果。

在ER(實體關係)建模時,相應的概念被稱爲一般化/專業化。這告訴你如何建模一個類/子類的關係,但是當你去建立你的數據庫時,它不會告訴你如何設計表。

有三種技術很好理解,在處理類和子類時可以非常有用。這裏是他們的標籤:。不幸的是,許多關於數據庫設計的教程從未涉及這些技術。對於瞭解對象建模並希望加快關係建模的人員而言,它們可能非常有用。

+0

+1那麼說,並考慮好點。 – 2013-02-16 16:23:28

+0

@Walter Mitty +1! – ABCD 2013-03-06 20:22:02

相關問題