Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 面向对象编程语言中的关系特征_Oop_Relational - Fatal编程技术网

Oop 面向对象编程语言中的关系特征

Oop 面向对象编程语言中的关系特征,oop,relational,Oop,Relational,除此之外,他们有没有其他尝试将关系特性集成到面向对象语言本身,而不仅仅是库 更新 最明显的例子之一是一对一、一对多或多对多关系。那么你也可以考虑有属性的关系。事实上,LINQ本身在最初的“Codd”意义上并不是特别“相关”的。(SQL也不是,但那是另一回事。) 为了确定基调,LINQ甚至没有关系的概念(松散地说,是一组符合标题的名称/值元组,即名称/类型元组)。它处理序列而不是集合和对象,而不是元组。在关系模型意义上,甚至匿名对象也与命名元组不同,因为new{b=2,a=1}不仅不等于new{a

除此之外,他们有没有其他尝试将关系特性集成到面向对象语言本身,而不仅仅是库

更新
最明显的例子之一是一对一、一对多或多对多关系。那么你也可以考虑有属性的关系。事实上,LINQ本身在最初的“Codd”意义上并不是特别“相关”的。(SQL也不是,但那是另一回事。)

为了确定基调,LINQ甚至没有关系的概念(松散地说,是一组符合标题的名称/值元组,即名称/类型元组)。它处理序列而不是集合和对象,而不是元组。在关系模型意义上,甚至匿名对象也与命名元组不同,因为
new{b=2,a=1}
不仅不等于
new{a=1,b=2}
,它们甚至不是相同的类型


平心而论,LINQ与过去40年的数据访问列车失事相比是一个巨大的进步,但这只是朝着正确方向迈出的一小步,我怀疑他们无意采取任何进一步的措施。事实上,在我看来,LINQ到EF是朝着错误方向迈出的一大步,朝着面向对象建模和远离关系模型的方向迈出了一大步(当然,并不是每个人都同意我的观点;-)。

对于postgres来说,C中有嵌入式SQL:

但我自己从来没用过

在大多数情况下,一个简单的库有助于访问SQL数据库,并在“关系”世界和面向对象世界之间提供了良好的分离(尽管,正如Marcelo Cantos所说,SQL实际上在最初的理论意义上不是关系的……)

然而,也许您正在寻找某种东西来“映射”关系型和面向对象型之间的关系?有一种称为面向对象映射的技术,可以创建某种关系数据库的面向对象视图(请参阅)。但请注意,这听起来不错,但实际上会产生一些问题(详情请参阅)