SetProjection() を使用する場合のデータベース理論と NHibernate の観点から、プロジェクションとは何ですか?
6 に答える
射影は、リレーショナル代数の基本操作の 1 つです。関係と、その関係の属性の (場合によっては空の) リストを入力として受け取ります。重複するタプルが削除された、指定された属性のリストのみを含むリレーションを出力します。つまり、出力もリレーションでなければなりません。
たとえば、関係 R{A,B} に 3 つのタプル {1,10}、{2,10}、{3,20} が含まれる場合、属性リスト {B} に対する R の射影には 2 つのタプルが含まれます: { 10}、{20}。
つまり、プロジェクションは SQL の SELECT DISTINCT とほぼ同じです (null と重複列の場合を除く)。
簡単に言うと、これは入力 (データベースの行など) を受け取り、出力 (行の列の 1 つ、または複数の列に基づく計算など) を生成する関数です。
プロジェクションとは、クエリ内の列のサブセットを意味します。
select x, y, z from YourTable
x、y、z はここでの射影です。
休止状態に関しては、選択する列を指定するようなものです。フェッチする列をマッピングで決定するのとは対照的です。これは、ProjectionList を介して、SQL 関数、サブクエリ、単一の列、または上記のすべてを指定できることを意味します。たとえば、テーブル内の行をカウントしたい場合SetProjection(Projections.RowCount())
。