JP5060350B2 - リレーショナルデータベースのレコード追加システム - Google Patents

リレーショナルデータベースのレコード追加システム Download PDF

Info

Publication number
JP5060350B2
JP5060350B2 JP2008061953A JP2008061953A JP5060350B2 JP 5060350 B2 JP5060350 B2 JP 5060350B2 JP 2008061953 A JP2008061953 A JP 2008061953A JP 2008061953 A JP2008061953 A JP 2008061953A JP 5060350 B2 JP5060350 B2 JP 5060350B2
Authority
JP
Japan
Prior art keywords
record
sequence number
value
application program
relational database
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008061953A
Other languages
English (en)
Other versions
JP2009217652A (ja
Inventor
篤志 寺嵜
秀司 島田
雄二 渡辺
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Solutions Ltd
Original Assignee
Hitachi Solutions Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Solutions Ltd filed Critical Hitachi Solutions Ltd
Priority to JP2008061953A priority Critical patent/JP5060350B2/ja
Publication of JP2009217652A publication Critical patent/JP2009217652A/ja
Application granted granted Critical
Publication of JP5060350B2 publication Critical patent/JP5060350B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、リレーショナルデータベースのレコード追加システムに関し、特に構造型データベース特有のレコード追加・検索手段をリレーショナルデータベースで実現する際に有用な、リレーショナルデータベースのレコード追加システムに関するものである。
構造型データベースでは、同一の親を持つ子レコード同士がポインタによって繋がっており、レコードの検索はポインタに沿って行われる。アプリケーションプログラムは子レコードを追加する際に、任意の位置に子レコードを追加することで、子レコードを検索する際の順序を自由に決定することができる。
一方、リレーショナルデータベースでは、テーブル内のレコードの格納順序とは別に、レコードを検索する際、特定の列の値の昇順または降順にレコードを並べ替えることで、検索する順序を動的に決定することができる。
構造型データベースをリレーショナルデータベースに移行する際、この種の構造型データベース特有のレコード追加・検索手段をリレーショナルデータベースで実現する必要性が発生することがある。
特許文献1の「リレーショナルデータベースにおける階層型データのマッピングプログラム、装置、および方法」では、レコードに仮想カラムを設け、レコードを追加する際、自動的に順序を付与する方法が開示されている。この特許文献1で開示された方法では、順序がテーブル内の先頭となるようにレコードを追加する際、追加するレコードの順序に1を付与してレコードを追加すると共に、テーブル内のすべてのレコードの順序を元の値から1加算することで、順序付けを行う。
特開2004−259075号公報
構造型データベースによっては、同一の親を持つ子レコードの内の任意の位置に子レコードを追加することができる。これをリレーショナルデータベースで実現する場合、アプリケーションプログラム自身が親キーの値が同一のレコード群の内の順序付けを行う必要がある。
上述した特許文献1では、子レコードの内の任意の位置に子レコードを追加する方法については何等開示されていない。
以上の現状に鑑み、本発明は、アプリケーションプログラムが同一のキー値を持つレコードの内の順序付けを行うことなく、任意の位置に順序性を保証したレコードの追加を可能とすることで、構造型データベース特有のレコード追加・検索手段をリレーショナルデータベースで実現するリレーショナルデータベースのレコード追加システムを提供することを目的とする。
上記の課題を解決すべく、本発明は以下の構成を提供する。
請求項1に係る発明は、リレーショナルデータベースにレコードを追加するシステムに於いて、
前記レコードは、アプリケーションプログラムが意識しているキーと、キー値が同一のレコード群の内の順序を示す順序番号を含み、
前記アプリケーションプログラムからのレコード追加要求に応答してレコードを追加する際、前記アプリケーションプログラムが追加要求しているレコードと同一のキー値を持つレコードが前記リレーショナルデータベース内に存在する場合は、その同一のキー値を持つレコードの内の順序番号の最大値に1を加算した値を出力し、存在しない場合は、1を出力する順序番号割当手段と、
前記順序番号割当手段から出力された値を前記アプリケーションプログラムが追加要求しているレコードの順序番号に設定し、該レコードをリレーショナルデータベース内に格納するレコード追加手段と、
前記アプリケーションプログラムから渡される前記追加するレコードの位置情報と、前記アプリケーションプログラムが追加要求しているレコードのキー値とに基づいて、前記リレーショナルデータベース内の同一のキー値を持つ順序番号の更新が必要なレコードを検索するレコード検索手段と、
前記レコード検索手段によって検索されたレコードの順序番号を更新する際、前記順序番号割当手段から出力された値に1を加算した値から始まる連番を前記検索されたレコードの順序番号に設定し、該レコードを更新するレコード更新手段と、
前記アプリケーションプログラムが追加要求しているレコードと同一のキー値を持つレコードの順序番号が上限値に達した際、該レコードの順序番号を1から始まる連番で再編成する順序番号再編成手段とを備えたことを特徴とするリレーショナルデータベースのレコード追加システムを提供するものである。
請求項2に係る発明は、前記レコード検索手段は、前記順序番号に設定されたインデクスを使用してレコードを検索する機能を備えたことを特徴とする請求項1記載のリレーショナルデータベースのレコード追加システムを提供するものである。
ここで、アプリケーションプログラムから渡される「位置情報」とは、レコードを追加する位置を示す情報であり、テーブル内でレコードを一意に識別できるキーなど、レコードを特定できる情報と、特定したレコードの前、又は後ろのどちらに追加するかを指示する情報とを示す。
また、「順序番号の上限値」とは、順序番号の列に格納できる数値の上限値であり、例えば、順序番号の列の属性を4バイト長で内部表現される整数型とすると、格納できる数値の上限値は2147483647である。
本発明によれば、アプリケーションプログラムが同一のキー値を持つレコードの内の順序付けを行うことなく、任意の位置に順序性を保証したレコードの追加を可能とすることで、構造型データベース特有のレコード追加・検索手段をリレーショナルデータベースで実現できる。
また、本発明において、順序番号を最大値で更新する利点は、同一のキー値を持つレコードの内で順序番号が重複しない点にある。つまり、順序番号の更新により、インデクスが即時更新されても、検索結果に影響を与えないようにすることができる。これは、順序番号の列に設定したインデクスを使用して高速にレコードを検索しながら順序番号を更新することを可能とする。
以下、実施例を示した図面を参照しつつ本発明の実施の形態を説明する。
図1は、本発明の実施例のシステム構成図であり、レコード追加プログラム1と、補助記憶装置にあるデータベース2と、アプリケーションプログラム3と、DBMS(database
management system)4とから構成されている。矢印は制御の流れを示している。
データベース2に格納されているレコードは、図4に示す如く、アプリケーションプログラム3が意識しているキーを示すキー21と、キー21の値が同一のレコード群の内の順序を示す順序番号22と、データを示すデータ23とを有している。本実施例では、順序番号22の列の属性を4バイト長で内部表現する整数型を想定し、INTEGER型とする。
図2は、レコード追加プログラム1の機能ブロック図であり、レコード追加手段11と、レコード検索手段12と、レコード更新手段13と、順序番号割当手段14と、順序番号再編成手段15とから構成されている。矢印はデータの流れを示している。
レコード追加手段11は、アプリケーションプログラム3から渡されたレコードの順序番号に順序番号割当手段14から渡された値を設定して、レコードをデータベース2に格納する機能を有する。
レコード検索手段12は、アプリケーションプログラム3から渡された位置情報と、順序番号割当手段14から渡された値とを基に、順序番号の変更が必要なレコードを検索する機能を有する。
レコード更新手段13は、レコード検索手段12から渡されたレコードの順序番号に、順序番号割当手段14から渡された値に1を加算した値から始まる連番を設定し、レコードを更新する機能を有する。
順序番号割当手段14は、アプリケーションプログラム3から渡されたレコードと同一のキー値を持つレコードがテーブル内に存在する場合は、この同一のキー値を持つレコードの内の順序番号の最大値に1を加算した値を出力し、存在しない場合は、1を出力する機能を有する。
順序番号再編成手段15は、アプリケーションプログラム3から渡されたレコードと同一のキー値を持つレコードの順序番号を1から始まる連番で再編成する機能を有する。
図3は、構造型データベースの概念図である。丸印はレコードであり、丸印の中の文字はレコードの内容を示している。矢印はポインタを示している。いま、親レコード501には、子レコード502、503が属している。同様に、親レコード511には、子レコード512、513、514が属している。同様に、親レコード521には、子レコード522、523が属している。
図4は、図3に示す構造型データベースのレコードをリレーショナルデータベースに格納したときの概念図である。親テーブルは親レコードを格納したテーブルであり、親レコードのキーを示すキー61と、データを示すデータ62とを有する。子テーブルは子レコードを格納したテーブルであり、子レコードが属する親レコードのキーを示すキー21と、キー21の値が同一のレコード群の内の順序を示す順序番号22と、データを示すデータ23とを有する。
図5はレコード追加プログラム1の処理例を示す流れ図、図6はレコード追加プログラム1の機能の1つである順序番号割当手段14の処理例を示す流れ図、図7はレコード追加プログラム1の機能の1つである順序番号再編成手段15の処理例を示す流れ図であり、以下、各図を参照して本実施例の動作を説明する。
アプリケーションプログラム3はデータベース2にレコードを追加する際、レコード追加プログラム1に、追加しようとするレコードと、レコードを追加する位置を示す位置情報を渡す。
アプリケーションプログラム3がレコード追加プログラム1に渡すレコードは、図8に示すようにキー71と、データ72とを有している。ここで、キー71はデータベース2に格納されているキー21に、データ72はデータ23に対応している。また、アプリケーションプログラム3がレコード追加プログラム1に渡す位置情報は、図9に示すように、レコードを一意に識別できる一意キー81と、一意キー81で示されるレコードの前、又は後ろのどちらに追加するかを指示する前後指示情報82とを有する。本実施例では、81は、データ23の値とする。
今、例えば、テーブルの内容が図4の子テーブルに示すものであるときに、データ23の値が「B4」であるレコードの前に、キー21の値が「A2」で、データ23の値が「B8」であるレコードを追加するものとする。
この場合、アプリケーションプログラム3は、図8に示すレコードのキー71に「A2」を、データ72に「B8」を設定したレコードと、図9に示す位置情報の一意キー81に「B4」を、前後指示情報82に「前」を設定した位置情報とをレコード追加プログラム1に渡す。
レコード追加プログラム1は、図5の流れ図に示すように、追加要求されたレコードに順序番号を設定する項目を追加する(ステップS1)。その後、順序番号割当手段14で順序番号を割り当てる(ステップS2)。
順序番号割当手段14は、図6の流れ図に示すように、追加要求されたレコードと同一のキー値を持つレコードの内の順序番号の最大値を検索する(ステップS12)。この場合、キー値が「A2」の順序番号の最大値である「3」が検索される。検索できた場合(ステップS13がYES)は、ステップS14に進み、アプリケーションプログラム3から渡された一意キーと同一の一意キーを持つレコードを検索し、当該レコードの順序番号を取得する。
次に、位置情報の前後指示情報82を参照し、一意キー81で示されるレコードの前に追加するか、後ろに追加するかを判断する(ステップS15)。今、前後指示情報82には「前」が指定されているので、ステップS15がYESとなり、ステップS16に進む。
ステップS16では、追加要求されたレコードと同一のキー値を持ち、かつ、ステップS14で取得した順序番号以上の順序番号を持つレコードの数を検索する。この場合、キー値が「A2」で、かつ、順序番号が「2」以上のレコードの数である「2」が検索されることになる。
なお、前後指示情報82に「後」が指定されている場合は、ステップS15がNOとなり、ステップS17に進む。ステップS17では、追加するレコードと同一のキー値を持ち、かつ、ステップS14で取得した順序番号より大きい順序番号を持つレコードの数を検索する。
続いて、ステップ18の判定により、順序番号が上限値に達するかどうかを判断する。
尚、「順序番号の上限値」とは、順序番号の列に格納できる数値の上限値であり、例えば、順序番号の列の属性を4バイト長で内部表現される整数型とすると、格納できる数値の上限値は2147483647である。
この場合、「(2147483647−3)≧(2+1)」であり、順序番号が上限値に達しないと判断し(ステップS18がYES)、ステップS19に進み、検索された最大値に1を加算した値を出力する。従って、「3」に1を加算した「4」が出力されることになる。
なお、順序番号が上限値に達すると判断した場合(ステップS18がNO)は、順序番号再編成手段15で順序番号の再編成を行う(ステップS20)。
順序番号再編成手段15は、図7の流れ図に示すように、追加要求されたレコードと同一のキー値を持つレコードを順序番号の昇順に読み出し、読み出したレコードの順序番号に1から始まる連番を設定し、読み出したレコードを更新する(ステップS25〜S30)。
その後、順序番号割当手段は、図6の流れ図に示すように、再編成した後の順序番号の最大値に1を加算した値を出力する(ステップS21)。
なお、追加要求されたレコードと同一のキー値を持つレコードが1件もないことにより順序番号の最大値が検索できなかった場合(ステップS13がNO、ステップS22がYES)は、1を出力する(ステップS24)。また、追加要求されたレコードと同一のキー値を持つレコードがあるにも関わらず、順序番号の最大値が検索できなかった場合(ステップS13がNO、ステップS22がNO)は、エラー終了する(ステップS23)。
続いて、アプリケーションプログラム3は、図5の流れ図に示すように、割り当てられた順序番号を追加要求されたレコードの順序番号に設定し、追加要求されたレコードをデータベースに格納する(ステップS3)。従って、追加要求されたレコードの順序番号には「4」が設定されることになる。その後、割り当てられた順序番号をカウンタに設定する(ステップS4)。
続いて、レコード追加プログラム1は、位置情報の前後指示情報82を参照し、一意キー81で示されるレコードの前に追加するか、後ろに追加するかを判断する(ステップS5)。
今、前後指示情報82には「前」が指定されているので、ステップS5がYESとなり、ステップS6に進む。ステップS6では、追加要求されたレコードと同一のキー値を持ち、かつ、順序番号が一意キー81で示されるレコードの順序番号以上で、かつ、追加要求されたレコードに付与した順序番号未満の順序番号を持つレコードを、順序番号の昇順に検索するカーソルをオープンする。この場合、キー値が「A2」で、かつ、順序番号が「2」以上で、かつ、順序番号が「4」未満のレコードが検索されることになり、従って、データ23の値で「B4→B5」の順序でレコードが検索されることになる。
なお、前後指示情報82に「後」が指定されている場合は、ステップS5がNOとなり、ステップS7に進む。ステップS7では、追加するレコードと同一のキー値を持ち、かつ、順序番号が一意キー81で示されるレコードの順序番号より大きく、かつ、追加要求されたレコードに付与した順序番号未満の順序番号を持つレコードを、順序番号の昇順に検索するカーソルをオープンする。
次に、FETCH文を実行してレコードを1件取り出す(ステップS8)。レコードが取り出せた場合(ステップS9がNO)は、カウンタに1を加算した後、カウンタの値を検索されたレコードの順序番号に設定し、検索されたレコードを更新する(ステップS10〜11)。この場合、データ23の値が「B4」のレコードが取り出され、順序番号に「5」を設定し、このレコードを更新することになる。
なお、条件に合うレコードがない、又は検索が終了した場合(ステップS9がYES)は、処理終了となる。
ステップS8に戻り、再びFETCH文を実行すると、データ23の値が「B5」のレコードが取り出される。このレコードに対しても、上述と同様の手順でレコードの更新が行われ、このレコードの順序番号が「6」に更新される。
この結果、図10に示す如く、キー値が「A2」のレコードの順序番号がデータ23の値で「B3→B8→B4→B5」の順序となり、「B8」のレコードが「B4」の前に追加されたものとなる。
次に、テーブルの内容が図10に示すものであるときに、データ23の値が「B4」であるレコードの後ろに、キー21の値が「A2」で、データ23の値が「B9」であるレコードを追加するものとする。
この場合、アプリケーションプログラム3は、図8に示すレコードのキー71に「A2」を、データ72に「B9」を設定したレコードと、図9に示す位置情報の一意キー81に「B4」を、前後指示情報82に「後」を設定した位置情報とをレコード追加プログラム1に渡す。
レコード追加プログラム1は、上述の場合と同様に、追加要求されているレコードの順序番号に「7」を設定してレコードを追加する。また、ステップS7では、キー値が「A2」で、かつ、順序番号が「5」より大きく、かつ、順序番号が「7」未満のレコードが検索されることになり、従って、データ23の値で「B5」のレコードが検索され、このレコードの順序番号が「8」に更新されることになる。
この結果、図11に示す如く、キー値が「A2」のレコードの順序番号がデータ23の値で「B3→B8→B4→B9→B5」の順序となり、「B9」のレコードが「B4」の後ろに追加されたものとなる。
以上により、アプリケーションプログラム3は、同一のキー値を持つレコードの内の順序付けを行うことなく、任意の位置に順序性を保証したレコードの追加を行うことが可能となる。
なお、本発明は上述した実施形態に限定せず、発明の趣旨を逸脱しない範囲で種々の変更・変形が可能である。
本発明によるリレーショナルデータベースのレコード追加システムの構成図である。 本発明によるレコード追加プログラムの機能ブロック図である。 構造型データベースの論理的構造を示す概念図である。 リレーショナルデータベースのテーブル構造を示す概念図である。 本発明によるレコード追加プログラムの処理例を示す流れ図である。 本発明による順序番号割当手段の処理例を示す流れ図である。 本発明による順序番号再編成手段の処理例を示す流れ図である。 本発明によるアプリケーションプログラムが意識しているレコードの形式例を示す図である。 本発明によるアプリケーションプログラムがレコード追加プログラムに渡す位置情報の形式例を示す図である。 本発明によるレコード追加後のテーブルの内容を示す一例図である。 本発明によるレコード追加後のテーブルの内容を示す他の例図である。
符号の説明
1 レコード追加プログラム
2 データベース
3 アプリケーションプログラム
11 レコード追加手段
12 レコード検索手段
13 レコード更新手段
14 順序番号割当手段
15 順序番号再編成手段
21、61,71 キー
22 順序番号
23、62,72 データ

Claims (2)

  1. リレーショナルデータベースにレコードを追加するシステムに於いて、
    前記レコードは、アプリケーションプログラムが意識しているキーと、キー値が同一のレコード群の内の順序を示す順序番号を含み、
    前記アプリケーションプログラムからのレコード追加要求に応答してレコードを追加する際、前記アプリケーションプログラムが追加要求しているレコードと同一のキー値を持つレコードが前記リレーショナルデータベース内に存在する場合は、その同一のキー値を持つレコードの内の順序番号の最大値に1を加算した値を出力し、存在しない場合は、1を出力する順序番号割当手段と、
    前記順序番号割当手段から出力された値を前記アプリケーションプログラムが追加要求しているレコードの順序番号に設定し、該レコードをリレーショナルデータベース内に格納するレコード追加手段と、
    前記アプリケーションプログラムから渡される前記追加するレコードの位置情報と、前記アプリケーションプログラムが追加要求しているレコードのキー値とに基づいて、前記リレーショナルデータベース内の同一のキー値を持つ順序番号の更新が必要なレコードを検索するレコード検索手段と、
    前記レコード検索手段によって検索されたレコードの順序番号を更新する際、前記順序番号割当手段から出力された値に1を加算した値から始まる連番を前記検索されたレコードの順序番号に設定し、該レコードを更新するレコード更新手段と、
    前記アプリケーションプログラムが追加要求しているレコードと同一のキー値を持つレコードの順序番号が上限値に達した際、該レコードの順序番号を1から始まる連番で再編成する順序番号再編成手段とを備えたことを特徴とするリレーショナルデータベースのレコード追加システム。
  2. 前記レコード検索手段は、前記順序番号に設定されたインデクスを使用してレコードを検索する機能を備えたことを特徴とする請求項1記載のリレーショナルデータベースのレコード追加システム。
JP2008061953A 2008-03-12 2008-03-12 リレーショナルデータベースのレコード追加システム Expired - Fee Related JP5060350B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008061953A JP5060350B2 (ja) 2008-03-12 2008-03-12 リレーショナルデータベースのレコード追加システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008061953A JP5060350B2 (ja) 2008-03-12 2008-03-12 リレーショナルデータベースのレコード追加システム

Publications (2)

Publication Number Publication Date
JP2009217652A JP2009217652A (ja) 2009-09-24
JP5060350B2 true JP5060350B2 (ja) 2012-10-31

Family

ID=41189411

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008061953A Expired - Fee Related JP5060350B2 (ja) 2008-03-12 2008-03-12 リレーショナルデータベースのレコード追加システム

Country Status (1)

Country Link
JP (1) JP5060350B2 (ja)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02148175A (ja) * 1988-11-29 1990-06-07 Kansai Nippon Denki Software Kk リレーショナル型データベースシステム
JPH07244605A (ja) * 1994-03-03 1995-09-19 Fujitsu Ltd データベースシステム及びその更新方法
JP2003316794A (ja) * 2002-04-24 2003-11-07 Nec Corp データ収集格納方式

Also Published As

Publication number Publication date
JP2009217652A (ja) 2009-09-24

Similar Documents

Publication Publication Date Title
JP4604041B2 (ja) 集合値化された列とスカラ値化された列を単一のステートメントで修正するためのsql言語の拡張
US7480661B2 (en) Query services for database system
RU2406115C2 (ru) Доступ к сложным данным
US20040078355A1 (en) Information management system
US20070106767A1 (en) Database device database search device, and method thereof
US6778983B1 (en) Apparatus and method for accessing HTML files using an SQL query
JP5060350B2 (ja) リレーショナルデータベースのレコード追加システム
JP3552339B2 (ja) データベースシステム
JPH06215037A (ja) インデックスの自動更新装置
JPH01102656A (ja) システム性能見積処理方式
JP2722684B2 (ja) ファイルシステムの検索装置
JPS59146339A (ja) 情報検索方式
JPS62287350A (ja) インデツクス一括更新方式
JP2720805B2 (ja) プログラム流れ図参照方式
JP5048396B2 (ja) データ管理プログラム
JPH05274122A (ja) 情報相互変換方法および相互変換装置
JPH064273A (ja) データ処理装置
JPH11219372A (ja) データカテゴライズ装置
JP2847709B2 (ja) 設計支援装置
JP2001273178A (ja) データベース制御装置およびシステム
JPH04199338A (ja) データベース管理システム
JPH01248233A (ja) データベース検索装置
JPH04205173A (ja) 情報検索システム
WO2004081698A2 (en) Database tools
JPS6327927A (ja) 予約情報検索システムにおけるインデツクス作成方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100701

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120626

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120704

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120731

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120803

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150810

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5060350

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees