Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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
Database 什么是投影?_Database_Nhibernate_Relational Algebra - Fatal编程技术网

Database 什么是投影?

Database 什么是投影?,database,nhibernate,relational-algebra,Database,Nhibernate,Relational Algebra,在使用SetProjection()时,根据数据库理论和NHibernate,什么是投影?非常简单,它是一个函数,它接受输入(例如数据库行)并生成输出(例如,行中的一列,或者基于多列的某些计算)投影是关系代数的基本运算之一。它将一个关系和该关系的属性列表(可能为空)作为输入。它输出一个关系,该关系仅包含删除了重复元组的指定属性列表。换句话说,输出也必须是一个关系 例如,如果关系R{A,B}包含三个元组{1,10},{2,10},{3,20},那么R在属性列表{B}上的投影将包含两个元组:{10}

在使用SetProjection()时,根据数据库理论和NHibernate,什么是投影?

非常简单,它是一个函数,它接受输入(例如数据库行)并生成输出(例如,行中的一列,或者基于多列的某些计算)投影是关系代数的基本运算之一。它将一个关系和该关系的属性列表(可能为空)作为输入。它输出一个关系,该关系仅包含删除了重复元组的指定属性列表。换句话说,输出也必须是一个关系

例如,如果关系R{A,B}包含三个元组{1,10},{2,10},{3,20},那么R在属性列表{B}上的投影将包含两个元组:{10},{20}


简言之,投影或多或少相当于SQL中的SELECT DISTINCT(不包括具有NULL和重复列的情况)。

对于hibernate,它就像指定要选择的列一样。而不是让映射决定要获取哪些列。这意味着您可以通过ProjectionList指定sql函数、子查询、单个列或以上所有内容。例如,如果要计算表中的行数,请使用SetProjection(Projections.RowCount())投影表示查询中的列子集

select x, y, z from YourTable 

x、 y,z是此处的投影。

如果您熟悉SQL或数据库表: 投影是指要返回的字段/列/属性的数量。 选择处理要返回的行数/记录数。 有很好的视频解释 和

这也叫投影,请查看图表

投影对系统中的事件作出反应


项目在Hibernate中是简单的监听器

,生成输出(例如列)的函数在哪里执行?它是发生在SQL数据库服务器上,还是在返回整行结果后发生在应用程序/hibernate服务器上?谢谢。@KyleM:我已经很久没有用NHibernate来确定了,但我希望它能作为SQL的一部分执行。谢谢。。我也是这么想的。我刚刚想起另一种检查方法(hibernate查询日志,我们通常不使用…),所以我会检查并报告。@KyleM:计数投影肯定发生在SQL中,如果您查看发出的查询,它是select
count(columnName)
,而这些链接可能会回答这个问题,最好在这里包括答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能无效。可能的重复不是指“列的子集”而是“列的数量”?不,投影不是侦听器,而是映射。好的图片,错误的解释。