簡體   English   中英

面向對象編程語言中的關系特征

[英]Relational features in object oriented programming languages

除了Linq之外 ,是否還有其他嘗試將關系功能集成到面向對象的語言本身中,而不僅僅是庫?

更新最明顯的例子是一對一,一對多或多對多關系。 然后,您也可以考慮具有屬性的關系。

據我所知。 實際上,就最初的“ Codd”一詞而言,LINQ本身並不是特別的“關系”。 (SQL也不是,但這是另一個故事。)

只是為了設置基調,LINQ甚至沒有關系的概念(說不清話,一組符合標題的名稱/值元組,即名稱/類型元組)。 它處理序列而不是集合和對象而不是元組。 在關系模型的意義上,甚至匿名對象也不是與命名元組一樣的東西,因為new { b = 2, a = 1 }不僅不等於new { a = 1, b = 2 } ,它們也不是甚至同一個類型!

公平地講,LINQ是過去40年來數據訪問火車殘骸的巨大改進,但它只是朝着正確方向邁出了很小的一步,我懷疑沒有打算采取任何進一步措施。 實際上,對我來說,LINQ-to-EF似乎是朝錯誤的方向邁出了一大步,朝OO建模方向發展,而遠離了關系模型(當然,並不是每個人都同意我的觀點;-)。

C中有用於Postgres的嵌入式SQLhttp : //www.postgresql.org/docs/8.4/interactive/ecpg.html

但是我從來沒有親自使用過它。

在大多數情況下,簡單的庫可以很好地訪問SQL數據庫,並且可以很好地區分“關系”世界和面向對象的世界(盡管正如Marcelo Cantos所言,SQL實際上並不是從理論上講的關系。 )。

但是,也許您正在尋找在關系和面向對象之間“映射”的東西? 有一種稱為面向對象的映射的技術可以為關系數據庫創建某種面向對象的視圖(請參閱http://en.wikipedia.org/wiki/Object-relational_mapping )。 但請注意,這聽起來不錯,但實際上會帶來一些問題(有關詳細信息,請參見http://en.wikipedia.org/wiki/Object-relational_impedance_mismatch )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM