検索条件

検索条件

 

検索条件とは、式(検索)の集まりです。

式(検索)

式とは、情報タイプや用語・値から構成される具体的な条件です。

関連テーブルの指定

式で、情報タイプに関連するテーブルを指定するには、

  • 子のOne 1 - 1の記録の子
  • 子のMany 1 - 複数の記録の子
  • 子のManyMany 複数 - 複數の記録の子
  • 親のOne 1 - 1の記録の親
  • 親のMany 1 - 複数の記録の親 
  • 親のManyMany 複数 - 複數の記録の親

のいずれかを選択します。

 

これらは、テーブル設定の、関連テーブル設定で、実際に関連するテーブルにしているかどうかは関係ありません。

2つめ以降の式では、「かつ」「または」の右横のチェックボックスにチェックを入れると、関連テーブルの指定ができます。

式のまとまり

 

式と式との間で、「かつ」「または」の設定を行えますが、これ以外に、式のまとまりを追加して、式のまとまりの間で、「かつ」「または」の設定も行えます。

検索の手順の例

  1. 最初に、式を追加します。
  2. 式の1つめは、どの情報タイプの記録を検索するかを指定します。
  3. その情報タイプを、他のテーブルと関わりなく検索するには、関連テーブル無しを選択します。
  4. 用語を指定し、その用語の値や条件を指定します。
  5. 検索を実行します。

 

 

検索の仕組みの技術的な解説

検索実行で、整合性をとるための方法について。

開発者向け。

 

検索実行の流れは次の通りです。

  1. データベースに問い合わせて、条件に合う記録のIdのリストを取得します。
  2. そのIdのリストを基に、再度データベースに問い合わせて記録を取得し、画面のリストに表示します。
課題

1と2との間は、ごく短いのですが、この間にデータベースのデータを変更した場合、画面で表示した記録が、検索条件に合わない記録として表示される可能性があります。1の段階では、検索条件に合うのですが、1の処理が終わり、2のデータベースに問い合わせるまでに、記録を変更したばあい、その記録が検索条件に合わなくなっている可能性があります。

解決方法

これを解決するため、1,2のデータベースへの問合せは、IsolationLevelをSerializableにしたTransactionのScopeの中で行っています。

 

式のまとまりの検索の技術的解説

開発者向けです。

 

検索を実行した時、式のまとまりごとに、データベースに問い合わせ、結果を取得します。そして、その結果の和集合・積集合から、最終的な結果を算出します。

 

例えば、次のような処理をするとします。

  1. 式のまとまり データベースで検索
  2. 式のまとまり データベースで検索
  3. 1と2との和集合を最終的な結果とする。
課題

この1と2との間で、他のPCでデータベースを更新すると、1の時点でのデータベースと、2の時点でのデータベースとの差が、検索に反映される可能性があります。これにより、検索結果が不整合になる可能性があります。

解決方法

これを回避するには、1,2のデータベースへの問合せは、IsolationLevelをSerializableにしたTransactionのScopeの中で行います。

ただし、「検索実行で、整合性をとるための方法」でも、同じようにIsolationLevelをSerializableにしているので、それで間に合います。