【问题标题】:What is a Projection?什么是投影?
【发布时间】:2010-08-11 17:26:02
【问题描述】:

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

【问题讨论】:

标签: database nhibernate relational-algebra


【解决方案1】:

投影是关系代数的基本运算之一。它需要一个关系和一个(可能为空的)该关系的属性列表作为输入。它输出一个只包含指定属性列表的关系删除了重复的元组。换句话说,输出也必须是一个关系。

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

简而言之,投影或多或少等同于 SQL 中的 SELECT DISTINCT(不包括空值和重复列的情况)。

【讨论】:

    【解决方案2】:

    非常简单,它是一个函数,它接受输入(例如数据库行)并产生输出(例如行中的一列,或者可能基于多列的一些计算)。

    【讨论】:

    • 在 Hibernate 中,产生输出(例如列)的函数在哪里执行?它是发生在 SQL 数据库服务器上还是在返回完整行结果后发生在应用程序/休眠服务器上?谢谢。
    • @KyleM:我已经很久没有使用 NHibernate 了,但我希望它可以作为 SQL 的一部分执行。
    • 谢谢.. 我也是这么想的。我只记得另一种检查方法(休眠查询日志记录,我们通常不使用..),所以我会检查并报告。
    • @KyleM:计数投影肯定发生在SQL中,如果你查看发出的查询,它是select count(columnName)
    【解决方案3】:

    投影表示查询中列的子集。

    select x, y, z from YourTable 
    

    x,y,z是这里的投影。

    【讨论】:

    • 不是表示“列子集”而不是“列数”吗?
    【解决方案4】:

    就休眠而言,它就像指定要选择的列。与让映射决定获取哪些列相反。这意味着您可以通过 ProjectionList 指定 sql 函数、子查询、单个列或以上所有内容。例如,如果您想计算表 SetProjection(Projections.RowCount()) 中的行数。

    【讨论】:

      【解决方案5】:

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

      【讨论】:

      • 虽然这些链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
      【解决方案6】:

      也叫投影,请看图

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

      项目很简单监听器

      【讨论】:

      • 不,投影不是监听器,它是映射。不错的图片,错误的解释。
      猜你喜欢
      • 2017-02-15
      • 1970-01-01
      • 2010-11-05
      • 1970-01-01
      • 2014-06-08
      • 1970-01-01
      • 1970-01-01
      • 2017-02-27
      • 1970-01-01
      相关资源
      最近更新 更多