(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-29
(45)【発行日】2022-12-07
(54)【発明の名称】情報検索装置、データベースの更新方法、データベースの更新装置、データベース更新用プログラム
(51)【国際特許分類】
G06F 16/28 20190101AFI20221130BHJP
G06F 16/23 20190101ALI20221130BHJP
【FI】
G06F16/28
G06F16/23
(21)【出願番号】P 2018166754
(22)【出願日】2018-09-06
【審査請求日】2021-07-07
(31)【優先権主張番号】P 2018090308
(32)【優先日】2018-05-09
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】592218300
【氏名又は名称】学校法人神奈川大学
(74)【代理人】
【識別番号】100098626
【氏名又は名称】黒田 壽
(74)【代理人】
【識別番号】100134728
【氏名又は名称】奥川 勝利
(72)【発明者】
【氏名】桑原 恒夫
【審査官】早川 学
(56)【参考文献】
【文献】特許第6269884(JP,B1)
【文献】特開2012-108635(JP,A)
【文献】米国特許出願公開第2014/0278750(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
複数の関係項目の中から指定された関係項目に関連付けられた検索対象項目を、複数の検索対象項目の中からコンピュータによって検索する情報検索装置であって、
前記複数の関係項目のうちの2つ以上の関係項目に同一の上位項目を関連づけた第一データと、前記複数の検索対象項目のうち、前記同一の上位項目が関連づけられた関係項目に関係する検索対象項目に、該上位項目を関連づけた第二データと、前記第一データ及び前記第二データでは関連づけられない関係項目と検索対象項目とを関連づけた第三データと、を有し、かつ、前記第三データは、前記上位項目のいずれにも関連づけられていない関係項目と検索対象項目とを関連づけた第三データAと、前記上位項目に関連づけられた関係項目と検索対象項目とを関連づけた第三データBとに分割されたデータ構造をもつデータベースを用い、
前記複数の関係項目の中から1つ以上の関係項目が指定された所定の検索条件での検索を行う場合、前記コンピュータが、前記第一データを参照し、該1つ以上の関係項目のうちの一部又は全部が関連づけられた上位項目が存在すると判断したときは、少なくとも前記第二データを検索し、前記関連づけられた上位項目が存在しないと判断したときは、前記第三データのみを検索することを特徴とする情報検索装置。
【請求項2】
複数の関係項目の中から指定された関係項目に関連付けられた検索対象項目を、複数の検索対象項目の中からコンピュータによって検索する情報検索装置であって、
前記複数の検索対象項目のうちの2つ以上の検索対象項目に関連づけられた上位項目を、該2つ以上の検索対象項目に関係する関係項目に関連づけた第六データと、前記第六データには含まれない関係項目と該関係項目に関係する検索対象項目とを関連づけた第七データと、前記複数の検索対象項目のうちの2つ以上の検索対象項目に同一の上位項目を関連づけた第八データと、を有し、かつ、前記第七データは、前記上位項目のいずれにも関連づけられていない検索対象項目と関係項目とを関連づけた第七データAと、前記上位項目に関連づけられた検索対象項目と関係項目とを関連づけた第七データBとに分割されたデータ構造をもつデータベースを用い、前記コンピュータが、前記第六データを参照して前記指定された関係項目に関連づけられた上位項目が存在すると判断したときは、前記第八データから該上位項目に関連づけられた検索対象項目を抽出して、該検索対象項目を検索結果として出力し、前記第七データを参照して前記指定された関係項目に関係する検索対象項目が存在すると判断したときは、該検索対象項目を検索結果として出力することを特徴とする情報検索装置。
【請求項3】
複数の関係項目の中から指定された関係項目に関連付けられた検索対象項目を、複数の検索対象項目の中からコンピュータによって検索する情報検索装置に用いられるデータベースであって、前記複数の関係項目のうちの2つ以上の関係項目に同一の上位項目を関連づけた第一データと、前記複数の検索対象項目のうち、前記同一の上位項目が関連づけられた関係項目に関係する検索対象項目に、該上位項目を関連づけた第二データと、前記第一データ及び前記第二データでは関連づけられない関係項目と検索対象項目とを関連づけた第三データと、を有し、かつ、前記第三データが、前記上位項目のいずれにも関連づけられていない関係項目と検索対象項目とを関連づけた第三データAと、前記上位項目に関連づけられた関係項目と検索対象項目とを関連づけた第三データBとに分割されたデータ構造をもつデータベースの更新方法であって、
前記上位項目のいずれにも関連づけられていない関係項目とこれに関連付けられた検索対象項目とが入力されたときは、該関係項目及び該検索対象項目のレコードを前記第三データAに追加し、前記上位項目に関連づけられた関係項目とこれに関連付けられた検索対象項目とが入力されたときは、前記第三データのうちの前記第三データBだけを検索し、該検索対象項目と同じ検索対象項目について、該関係項目とともに前記同一の上位項目が関連づけられる関係項目が前記第三データBに存在した場合には、該検索対象項目及び該関係項目のレコードを前記第三データBから削除するとともに、該同一の上位項目を該検索対象項目に関連づけたレコードを前記第二データに追加し、該関係項目とともに前記同一の上位項目が関連づけられる関係項目が前記第三データBに存在しなかった場合には、入力されたレコードを前記第三データBに追加する追加工程を
コンピュータが実行することを特徴とするデータベースの更新方法。
【請求項4】
複数の関係項目の中から指定された関係項目に関連付けられた検索対象項目を、複数の検索対象項目の中からコンピュータによって検索する情報検索装置に用いられるデータベースであって、前記複数の検索対象項目のうちの2つ以上の検索対象項目に関連づけられた上位項目を、該2つ以上の検索対象項目に関係する関係項目に関連づけた第六データと、前記第六データには含まれない関係項目と該関係項目に関係する検索対象項目とを関連づけた第七データと、前記複数の検索対象項目のうちの2つ以上の検索対象項目に同一の上位項目を関連づけた第八データと、を有し、かつ、前記第七データが、前記上位項目のいずれにも関連づけられていない検索対象項目と関係項目とを関連づけた第七データAと、前記上位項目に関連づけられた検索対象項目と関係項目とを関連づけた第七データBとに分割されたデータ構造をもつデータベースの更新方法であって、
前記上位項目のいずれにも関連づけられていない検索対象項目とこれに関連付けられた関係項目とが入力されたときは、該検索対象項目及び該関係項目のレコードを前記第七データAに追加し、前記上位項目に関連づけられた検索対象項目とこれに関連付けられた関係項目とが入力されたときは、前記第七データのうちの前記第七データBだけを検索し、該関係項目と同じ関係項目について、該検索対象項目とともに前記同一の上位項目が関連づけられる検索対象項目が前記第七データBに存在した場合には、該関係項目及び該検索対象項目のレコードを前記第七データBから削除するとともに、該同一の上位項目を該関係項目に関連づけたレコードを前記第六データに追加し、該関係項目とともに前記同一の上位項目が関連づけられる関係項目が前記第七データBに存在しなかった場合には、入力されたレコードを前記第七データBに追加する追加工程を
コンピュータが実行することを特徴とするデータベースの更新方法。
【請求項5】
複数の関係項目の中から指定された関係項目に関連付けられた検索対象項目を、複数の検索対象項目の中からコンピュータによって検索する情報検索装置に用いられるデータベースであって、前記複数の関係項目のうちの2つ以上の関係項目に同一の上位項目を関連づけた第一データと、前記複数の検索対象項目のうち、前記同一の上位項目が関連づけられた関係項目に関係する検索対象項目に、該上位項目を関連づけた第二データと、前記第一データ及び前記第二データでは関連づけられない関係項目と検索対象項目とを関連づけた第三データと、を有し、かつ、前記第三データが、前記上位項目のいずれにも関連づけられていない関係項目と検索対象項目とを関連づけた第三データAと、前記上位項目に関連づけられた関係項目と検索対象項目とを関連づけた第三データBとに分割されたデータ構造をもつデータベースの更新装置であって、
前記上位項目のいずれにも関連づけられていない関係項目とこれに関連付けられた検索対象項目とが入力されたときは、該関係項目及び該検索対象項目のレコードを前記第三データAに追加し、前記上位項目に関連づけられた関係項目とこれに関連付けられた検索対象項目とが入力されたときは、前記第三データのうちの前記第三データBだけを検索し、該検索対象項目と同じ検索対象項目について、該関係項目とともに前記同一の上位項目が関連づけられる関係項目が前記第三データBに存在した場合には、該検索対象項目及び該関係項目のレコードを前記第三データBから削除するとともに、該同一の上位項目を該検索対象項目に関連づけたレコードを前記第二データに追加し、該関係項目とともに前記同一の上位項目が関連づけられる関係項目が前記第三データBに存在しなかった場合には、入力されたレコードを前記第三データBに追加する追加手段を有することを特徴とするデータベースの更新装置。
【請求項6】
複数の関係項目の中から指定された関係項目に関連付けられた検索対象項目を、複数の検索対象項目の中からコンピュータによって検索する情報検索装置に用いられるデータベースであって、前記複数の検索対象項目のうちの2つ以上の検索対象項目に関連づけられた上位項目を、該2つ以上の検索対象項目に関係する関係項目に関連づけた第六データと、前記第六データには含まれない関係項目と該関係項目に関係する検索対象項目とを関連づけた第七データと、前記複数の検索対象項目のうちの2つ以上の検索対象項目に同一の上位項目を関連づけた第八データと、を有し、かつ、前記第七データが、前記上位項目のいずれにも関連づけられていない検索対象項目と関係項目とを関連づけた第七データAと、前記上位項目に関連づけられた検索対象項目と関係項目とを関連づけた第七データBとに分割されたデータ構造をもつデータベースの更新装置であって、
前記上位項目のいずれにも関連づけられていない検索対象項目とこれに関連付けられた関係項目とが入力されたときは、該検索対象項目及び該関係項目のレコードを前記第七データAに追加し、前記上位項目に関連づけられた検索対象項目とこれに関連付けられた関係項目とが入力されたときは、前記第七データのうちの前記第七データBだけを検索し、該関係項目と同じ関係項目について、該検索対象項目とともに前記同一の上位項目が関連づけられる検索対象項目が前記第七データBに存在した場合には、該関係項目及び該検索対象項目のレコードを前記第七データBから削除するとともに、該同一の上位項目を該関係項目に関連づけたレコードを前記第六データに追加し、該関係項目とともに前記同一の上位項目が関連づけられる関係項目が前記第七データBに存在しなかった場合には、入力されたレコードを前記第七データBに追加する追加手段を有することを特徴とするデータベースの更新装置。
【請求項7】
複数の関係項目の中から指定された関係項目に関連付けられた検索対象項目を、複数の検索対象項目の中からコンピュータによって検索する情報検索装置に用いられるデータベースであって、前記複数の関係項目のうちの2つ以上の関係項目に同一の上位項目を関連づけた第一データと、前記複数の検索対象項目のうち、前記同一の上位項目が関連づけられた関係項目に関係する検索対象項目に、該上位項目を関連づけた第二データと、前記第一データ及び前記第二データでは関連づけられない関係項目と検索対象項目とを関連づけた第三データと、を有し、かつ、前記第三データが、前記上位項目のいずれにも関連づけられていない関係項目と検索対象項目とを関連づけた第三データAと、前記上位項目に関連づけられた関係項目と検索対象項目とを関連づけた第三データBとに分割されたデータ構造をもつデータベースを更新する工程をコンピュータに実行させるためのデータベース更新用プログラムであって、
前記上位項目のいずれにも関連づけられていない関係項目とこれに関連付けられた検索対象項目とが入力されたときは、該関係項目及び該検索対象項目のレコードを前記第三データAに追加し、前記上位項目に関連づけられた関係項目とこれに関連付けられた検索対象項目とが入力されたときは、前記第三データのうちの前記第三データBだけを検索し、該検索対象項目と同じ検索対象項目について、該関係項目とともに前記同一の上位項目が関連づけられる関係項目が前記第三データBに存在した場合には、該検索対象項目及び該関係項目のレコードを前記第三データBから削除するとともに、該同一の上位項目を該検索対象項目に関連づけたレコードを前記第二データに追加し、該関係項目とともに前記同一の上位項目が関連づけられる関係項目が前記第三データBに存在しなかった場合には、入力されたレコードを前記第三データBに追加する追加工程を、前記コンピュータに実行させることを特徴とするデータベース更新用プログラム。
【請求項8】
複数の関係項目の中から指定された関係項目に関連付けられた検索対象項目を、複数の検索対象項目の中からコンピュータによって検索する情報検索装置に用いられるデータベースであって、前記複数の検索対象項目のうちの2つ以上の検索対象項目に関連づけられた上位項目を、該2つ以上の検索対象項目に関係する関係項目に関連づけた第六データと、前記第六データには含まれない関係項目と該関係項目に関係する検索対象項目とを関連づけた第七データと、前記複数の検索対象項目のうちの2つ以上の検索対象項目に同一の上位項目を関連づけた第八データと、を有し、かつ、前記第七データが、前記上位項目のいずれにも関連づけられていない検索対象項目と関係項目とを関連づけた第七データAと、前記上位項目に関連づけられた検索対象項目と関係項目とを関連づけた第七データBとに分割されたデータ構造をもつデータベースを更新する工程をコンピュータに実行させるためのデータベース更新用プログラムであって、
前記上位項目のいずれにも関連づけられていない検索対象項目とこれに関連付けられた関係項目とが入力されたときは、該検索対象項目及び該関係項目のレコードを前記第七データAに追加し、前記上位項目に関連づけられた検索対象項目とこれに関連付けられた関係項目とが入力されたときは、前記第七データのうちの前記第七データBだけを検索し、該関係項目と同じ関係項目について、該検索対象項目とともに前記同一の上位項目が関連づけられる検索対象項目が前記第七データBに存在した場合には、該関係項目及び該検索対象項目のレコードを前記第七データBから削除するとともに、該同一の上位項目を該関係項目に関連づけたレコードを前記第六データに追加し、該関係項目とともに前記同一の上位項目が関連づけられる関係項目が前記第七データBに存在しなかった場合には、入力されたレコードを前記第七データBに追加する追加工程を、前記コンピュータに実行させることを特徴とするデータベース更新用プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数の関係項目の中から指定された関係項目に関連付けられた検索対象項目を、複数の検索対象項目の中からコンピュータによって検索するためのデータベースを用いる情報検索装置、並びに、当該データベースの更新方法、当該データベースの更新装置及び当該データベース更新用のプログラムに関する。
【背景技術】
【0002】
この種の情報検索装置としては、特許文献1に開示の情報検索装置が知られている。この情報検索装置の1つは、複数の関係項目のうちの2つ以上の関係項目に同一の上位項目を関連づけた第一データと、前記複数の検索対象項目のうち、前記同一の上位項目が関連づけられた関係項目に関係する検索対象項目に、該上位項目を関連づけた第二データと、前記第一データ及び前記第二データでは関連づけられない関係項目と検索対象項目とを関連づけた第三データと、を有するデータ構造をもつデータベースを用いる。この情報検索装置では、前記複数の関係項目の中から1つ以上の関係項目が指定された所定の検索条件での検索を行う場合、前記コンピュータが、前記第一データを参照し、該1つ以上の関係項目のうちの一部又は全部が関連づけられた上位項目が存在すると判断したときは、少なくとも前記第二データを検索し、前記関連づけられた上位項目が存在しないと判断したときは、前記第三データのみを検索する。これによれば、従来よりも検索処理速度の高速化が実現される。
【0003】
また、前記特許文献1には、複数の検索対象項目のうちの2つ以上の検索対象項目に関連づけられた上位項目を、該2つ以上の検索対象項目に関係する関係項目に関連づけた第六データと、前記第六データには含まれない関係項目と該関係項目に関係する検索対象項目とを関連づけた第七データと、前記複数の検索対象項目のうちの2つ以上の検索対象項目に同一の上位項目を関連づけた第八データと、を有するデータ構造をもつデータベースを用いる情報検索装置も、開示されている。この情報検索装置では、前記コンピュータが、前記第六データを参照して前記指定された関係項目に関連づけられた上位項目が存在すると判断したときは、前記第八データから該上位項目に関連づけられた検索対象項目を抽出して、該検索対象項目を検索結果として出力し、前記第七データを参照して前記指定された関係項目に関係する検索対象項目が存在すると判断したときは、該検索対象項目を検索結果として出力する。この情報検索装置でも、従来より検索処理速度の高速化が実現される。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところが、前記第一データから前記第三データを有するデータ構造をもったデータベースに対し、新たなレコード(互いに関連づけられた関係項目と検索対象項目)が入力されたとき、第三データに含まれていたレコードを削除するとともに、第二データにレコードを追加するというデータベースの更新処理が必要となる場合がある。例えば、同一の上位項目に2つの関係項目が関連づけられているケースにおいて、そのうちの一方の関係項目と検索対象項目とのレコードが第三データに存在するときに、その検索対象項目と他方の関係項目とのレコードが新たに入力された場合である。この場合、第三データから当該レコードを削除するとともに、第二データには、当該上位項目と当該検索対象項目とのレコードを追加する必要がある。
【0006】
このような更新処理が必要である関係で、入力される新たなレコードごとに、前記更新処理が必要であるか否かを判断する必要が生じる。この判断においては、新たなレコードに基づき、第三データに含まれる全レコードを検索して前記更新処理が必要か否かを判断する必要があり、第三データに含まれるレコード数が多くなると、第三データに対する検索に時間を要し、更新処理に時間がかかってしまう。
【0007】
この課題は、前記第六データから前記第八データを有するデータ構造をもったデータベースについても、同様に生じ得るものである。
【課題を解決するための手段】
【0008】
上述した課題を解決するために、本発明は、複数の関係項目の中から指定された関係項目に関連付けられた検索対象項目を、複数の検索対象項目の中からコンピュータによって検索するためのデータベースのデータ構造であって、前記複数の関係項目のうちの2つ以上の関係項目に同一の上位項目を関連づけた第一データと、前記複数の検索対象項目のうち、前記同一の上位項目が関連づけられた関係項目に関係する検索対象項目に、該上位項目を関連づけた第二データと、前記第一データ及び前記第二データでは関連づけられない関係項目と検索対象項目とを関連づけた第三データと、を有し、前記第三データは、前記上位項目のいずれにも関連づけられていない関係項目と検索対象項目とを関連づけた第三データAと、前記上位項目に関連づけられた関係項目と検索対象項目とを関連づけた第三データBとに分割されたものであることを特徴とするものである。
本発明は、第一データ及び第二データでは関連づけられない関係項目と検索対象項目とを関連づけた第三データが、第三データAと第三データBとに分割されたデータ構造となっている。
第三データAは、第三データに含まれるレコードのうち、上位項目のいずれにも関連づけられていない関係項目と検索対象項目とが関連づけられたレコードを含む。このようなレコードは、そのレコードの検索対象項目と同じ検索対象項目についてのレコードが新たに入力されても、これらのレコードの関係項目が同一の上位項目に関連づけられることがない。したがって、新たなレコードが入力されたとき、第三データAを検索する必要はないので、第三データに含まれているレコードを削除するとともに第二データにレコードを追加するという更新処理が必要であるか否かの判断を行うにあたって、第三データAを検索する必要がない。
一方、第三データBは、第三データに含まれるレコードのうち、上位項目に関連づけられた関係項目と検索対象項目とを関連づけられたレコードを含む。このようなレコードは、そのレコードの検索対象項目と同じ検索対象項目についてのレコードが新たに入力されると、これらのレコードの関係項目が同一の上位項目に関連づけられ得るものである。したがって、新たなレコードが入力されたときには、前記更新処理が必要であるか否かの判断を行うにあたり、第三データBを検索することを要する。なお、第三データBは、新たなレコードが入力されて前記更新処理が必要であるか否かの判断を行う際に検索する必要のないレコードを含んでいてもよい。
本発明によれば、前記更新処理が必要であるか否かの判断を行うにあたり、検索する必要のないレコードを第三データAにまとめることによって、第三データ全体ではなく、第三データの一部である第三データBだけを検索すればよい。したがって、第三データ全体を検索する必要のあった従来のデータベースよりも、検索対象となるレコード数が少なくなるので、検索時間が短くなり、更新処理に要する時間を短縮化できる。
しかも、前記更新処理が必要であると判断されると、第三データBからレコードが削除されるため、検索対象となる第三データBのレコード数が大きく増大することはなく、経時的にも更新処理の短縮化が実現される。
【0009】
また、前記データ構造において、前記第三データBは、前記同一の上位項目が関連づけられた複数の関係項目をまとめた構造を有してもよい。
上位項目に関連づけられた関係項目と検索対象項目とを関連づけられた新たなデータ(レコード)が入力された場合、第三データBの中を検索して、上述した更新処理が必要であるか否かを判断する必要がある。このとき、第三データBが単一のデータテーブルで構成されているような場合、その検索、判断処理に時間がかかってしまうことがある。
例えば、同一の上位項目に3つの関係項目が関連づけられているケースにおいて、ある検索対象項目と当該3つの関係項目のうちの1つとが関連づけられたレコードが新たに入力された場合を考える。この場合、その検索対象項目と当該3つの関係項目のうちの残り2つの関係項目とが関連づけられた2つのレコードが第三データBの中に存在するとき、第三データBから当該2つのレコードを削除するとともに、当該上位項目と当該検索対象項目とのレコードを第二データに追加するという更新処理を行うことになる。
ここで、前記のケースにおいて、新たなレコードが入力されたときに前記更新処理が必要であるか否かを判断するためには、第三データBの中から、その検索対象項目と当該3つの関係項目のうちの他の2つの関係項目とが関連付けられているかどうかを検索して調べる必要がある。このとき、第三データBの全体を対象に検索すると、第三データBのデータ量が多い場合には、その検索に要する時間が長くなる。特に、当該上位項目に3つ以上の関係項目が関連付けられている場合には、入力されたレコードの検索対象項目に関係する他の関係項目(入力されたレコードの関係項目を除いた当該上位項目に関連づけられている関係項目)をすべて(上記のケースでは2つ)検索して調べる必要があり、当該他の関係項目の数分だけ検索を繰り返し行う必要がある。
これに対し、本発明における第三データBは、同一の上位項目が関連づけられた複数の関係項目をまとめた構造、あるいはそれをさらに関係する検索対象項目ごとに分割してまとめた構造となっている。
更新処理が必要であるか否かを判断する際の検索処理においては、第三データBに対し、入力された新たなデータの関係項目が関連づけられている上位項目に関連づけられた他の関係項目のすべてが、入力された当該データの検索対象項目に関連づけられているかどうかを調べることになる。このとき、本発明における第三データBの構造であれば、同一の上位項目が関連づけられた複数の関係項目をまとめた構造となっているので、第三データBの全体を対象に検索する必要はなく、入力された当該データの関係項目が関連づけられている上位項目についてまとめられた部分(当該上位項目に関連づけられている関係項目とこれに関係する検索対象項目とのレコード)のみを対象に検索すればよい。この場合、第三データBの全体を対象に検索する場合と比べて、検索すべきデータ量(検索すべきレコード数)が少なくなる。
更には、上述した更新処理が必要であるか否かを判断する処理では、入力された当該データの関係項目が関連づけられている上位項目についてまとめられた部分の中から、新たに入力された検索対象項目と関係した関係項目の個数を検索するだけで、当該更新処理が必要であるか否かを判断することが可能となる。すなわち、上述のケースでいえば、当該上位項目に関連づけられた関係項目の数が3つであることから、検索して得られた個数が1つ以下であれば、この時点で、当該更新処理が不要であると判断することができる。検索対象範囲からデータ個数を検索する処理は、一般に、データを特定(抽出)する処理よりも短時間で実行できる。なお、検索して得られた個数が2つであった場合、当該更新処理が必要であると判断するには、更に、この2つのデータの関係項目と、入力された新規データの関係項目とが、重複していないことを確認する必要がある。
また、更新処理が必要であると判断された場合の第三データBに対する削除処理においても、第三データBの全体ではなく、入力された当該データの関係項目が関連づけられている上位項目についてまとめられた部分だけを対象に、削除するデータ(入力された当該データの検索対象項目と同じ検索対象項目を持つデータ)を特定して削除するだけで済む。すなわち、本発明によれば、削除処理でも、まとめられていない通常の構造の第三データBよりも短時間での処理が可能となる。
【0010】
また、前記データ構造において、前記第三データBは、前記検索対象項目ごとに、前記同一の上位項目が関連づけられた複数の関係項目を一検索単位でまとめた構造を有してもよい。
上述したとおり、上位項目に関連づけられた関係項目と検索対象項目とを関連づけられた新たなデータ(レコード)が入力された場合、第三データBの中を検索して、上述した更新処理が必要であるか否かを判断する必要がある。このとき、第三データBが単一のデータテーブルで構成されているような場合、その検索、判断処理に時間がかかってしまうことがある。
ここで、上述したケースにおいて、新たなレコードが入力されたときに前記更新処理が必要であるか否かを判断するためには、第三データBの中から、その検索対象項目と当該3つの関係項目のうちの他の1つの関係項目とが関連付けられたレコードを検索し、さらに、その検索対象項目と当該3つの関係項目のうちの残りの1つの関係項目とが関連付けられたレコードを検索するという検索処理を必要とする。したがって、第三データBの全体に対して2回の検索処理、すなわち、第三データBのレコード数(検索対象数)の2倍に相当するレコード数に対する検索処理、を実行する必要がある。
更に、更新処理が必要であると判断された場合には、第三データBの中から、該当する2つのレコードを削除する必要も生じる。この削除処理においても、第三データBの全体に対して、再び、これらの2つのレコードを検索する検索処理(第三データBのレコード数(検索対象数)の2倍に相当するレコード数に対する検索処理)を行い、削除対象のレコードを特定する必要がある。
これに対し、本発明における第三データBは、検索対象項目ごとに、同一の上位項目が関連づけられた複数の関係項目を一検索単位でまとめた構造となっている。ここでいう一検索単位とは、1回の検索処理によって特定できる単位であり、例えば、複数のレコードが記憶されたデータテーブルからレコード検索をする場合には1つのレコードが一検索単位であり、複数のデータファイル(データテーブル)からファイル検索をする場合には1つのデータファイルが一検索単位である。
このような構造であれば、更新処理が必要であるか否かを判断する際の検索処理において、第三データBの中から、入力された新たなデータと同じ検索対象項目についての検索単位(レコードやデータファイル(データテーブル)等)を1つ検索(1回検索)するだけで、更新処理が必要であるか否かを判断するのに必要な項目(第三データBにおいて当該検索対象項目に関連づけられたすべての関係項目)を特定することができる。加えて、同一の上位項目が関連づけられた複数の関係項目を検索対象項目ごとに一検索単位でまとめた構造であることから、第三データBに対して上述した検索処理を行う際の検索対象数は、まとめられていない通常の構造と比較して、まとめた分だけ少なくなる。その結果、本発明によれば、更新処理が必要であるか否かを判断する際の第三データBに対する検索処理では、通常の構造の第三データBよりも少ない検索対象数に対して、1回の検索処理を行うだけで済み、より短時間での更新処理が可能となる。
更に、更新処理が必要であると判断された場合の第三データBに対する削除処理においては、第三データBの中から、入力された新たなデータと同じ検索対象項目についての一検索単位を特定してこれを削除するだけで済む。すなわち、削除対象を特定するための検索処理でも、通常の構造の第三データBよりも少ない検索対象数に対して、1回の検索処理を行うだけで済み、より短時間での更新処理が可能となる。
【0011】
また、本発明は、複数の関係項目の中から指定された関係項目に関連付けられた検索対象項目を、複数の検索対象項目の中からコンピュータによって検索するためのデータベースのデータ構造であって、前記複数の検索対象項目のうちの2つ以上の検索対象項目に関連づけられた上位項目を、該2つ以上の検索対象項目に関係する関係項目に関連づけた第六データと、前記第六データには含まれない関係項目と該関係項目に関係する検索対象項目とを関連づけた第七データと、前記複数の検索対象項目のうちの2つ以上の検索対象項目に同一の上位項目を関連づけた第八データと、を有し、前記第七データは、前記上位項目のいずれにも関連づけられていない検索対象項目と関係項目とを関連づけた第七データAと、前記上位項目に関連づけられた検索対象項目と関係項目とを関連づけた第七データBとに分割されたものであることを特徴とするものである。
本発明は、第六データには含まれない関係項目と該関係項目に関係する検索対象項目とを関連づけた第七データが、第七データAと第七データBとに分割されたデータ構造となっている。
第七データAは、第七データに含まれるレコードのうち、上位項目のいずれにも関連づけられていない検索対象項目と関係項目とが関連づけられたレコードを含む。このようなレコードは、そのレコードの関係項目と同じ関係項目についてのレコードが新たに入力されても、これらのレコードの検索対象項目が同一の上位項目に関連づけられることがない。したがって、新たなレコードが入力されたとき、第七データAを検索する必要はない。したがって、新たなレコードが入力されたときに、第七データに含まれているレコードを削除するとともに第六データにレコードを追加するという更新処理が必要であるか否かの判断を行うにあたって、第七データAを検索する必要がない。
一方、第七データBは、第七データに含まれるレコードのうち、上位項目に関連づけられた検索対象項目と関係項目とを関連づけられたレコードを含む。このようなレコードは、そのレコードの関係項目と同じ関係項目についてのレコードが新たに入力されると、これらのレコードの検索対象項目が同一の上位項目に関連づけられ得るものである。したがって、新たなレコードが入力されたときには、前記更新処理が必要であるか否かの判断を行うにあたり、第七データBを検索することを要する。なお、第七データBは、新たなレコードが入力されて前記更新処理が必要であるか否かの判断を行う際に検索する必要のないレコードを含んでいてもよい。
本発明によれば、前記更新処理が必要であるか否かの判断を行うにあたり、検索する必要のないレコードを第七データAにまとめることによって、第七データ全体ではなく、第七データの一部である第七データBだけを検索すればよい。したがって、第七データ全体を検索する必要のあった従来のデータベースよりも、検索対象となるレコード数が少なくなるので、検索時間が短くなり、更新処理に要する時間を短縮化できる。
しかも、前記更新処理が必要であると判断されると、第七データBからレコードが削除されるため、検索対象となる第七データBのレコード数が大きく増大することはなく、経時的にも更新処理の短縮化が実現される。
【0012】
また、前記データ構造において、前記第七データBは、前記同一の上位項目が関連づけられた複数の検索対象項目をまとめた構造を有してもよい。
上位項目に関連づけられた検索対象項目と関係項目とを関連づけられた新たなデータ(レコード)が入力された場合、第七データBの中を検索して、上述した更新処理が必要であるか否かを判断する必要がある。このとき、第七データBが単一のデータテーブルで構成されているような場合、その検索、判断処理に時間がかかってしまうことがある。
例えば、同一の上位項目に3つの検索対象項目が関連づけられているケースにおいて、ある関係項目と当該3つの検索対象項目のうちの1つとが関連づけられたレコードが新たに入力された場合を考える。この場合、その関係項目と当該3つの検索対象項目のうちの残り2つの検索対象項目とが関連づけられた2つのレコードが第七データBの中に存在するとき、第七データBから当該2つのレコードを削除するとともに、当該上位項目と当該関係項目とのレコードを第六データに追加するという更新処理を行うことになる。
ここで、前記のケースにおいて、新たなレコードが入力されたときに前記更新処理が必要であるか否かを判断するためには、第七データBの中から、その関係項目と当該3つの検索対象項目のうちの他の2つの検索対象項目とが関連付けられているかどうかを検索して調べる必要がある。このとき、第七データBの全体を対象に検索すると、第七データBのデータ量が多い場合には、その検索に要する時間が長くなる。特に、当該上位項目に3つ以上の検索対象項目が関連付けられている場合には、入力されたレコードの関係項目に関係する他の検索対象項目(入力されたレコードの検索対象項目を除いた当該上位項目に関連づけられている検索対象項目)をすべて(上記のケースでは2つ)検索して調べる必要があり、当該他の検索対象項目の数分だけ検索を繰り返し行う必要がある。
これに対し、本発明における第七データBは、同一の上位項目が関連づけられた複数の検索対象項目をまとめた構造、あるいはそれをさらに関係する関係項目ごとに分割してまとめた構造となっている。
更新処理が必要であるか否かを判断する際の検索処理においては、第七データBに対し、入力された新たなデータの検索対象項目が関連づけられている上位項目に関連づけられた他の検索対象項目のすべてが、入力された当該データの関係項目に関連づけられているかどうかを調べることになる。このとき、本発明における第七データBの構造であれば、同一の上位項目が関連づけられた複数の検索対象項目をまとめた構造となっているので、第七データBの全体を対象に検索する必要はなく、入力された当該データの検索対象項目が関連づけられている上位項目についてまとめられた部分(当該上位項目に関連づけられている検索対象項目とこれに関係する関係項目とのレコード)のみを対象に検索すればよい。この場合、第七データBの全体を対象に検索する場合と比べて、検索すべきデータ量(検索すべきレコード数)が少なくなる。
更には、上述した更新処理が必要であるか否かを判断する処理では、入力された当該データの検索対象項目が関連づけられている上位項目についてまとめられた部分の中から、新たに入力された関係項目と関係した検索対象項目の個数を検索するだけで、当該更新処理が必要であるか否かを判断することが可能となる。すなわち、上述のケースでいえば、当該上位項目に関連づけられた検索対象項目の数が3つであることから、検索して得られた個数が1つ以下であれば、この時点で、当該更新処理が不要であると判断することができる。検索対象範囲からデータ個数を検索する処理は、データを特定(抽出)する処理よりも短時間で実行できる。なお、検索して得られた個数が2つであった場合、当該更新処理が必要であると判断するには、更に、この2つのデータの検索対象項目と、入力された新規データの検索対象項目とが、重複していないことを確認する必要がある。
また、更新処理が必要であると判断された場合の第七データBに対する削除処理においても、第七データBの全体ではなく、入力された当該データの検索対象項目が関連づけられている上位項目についてまとめられた部分だけを対象に、削除するデータ(入力された当該データの関係項目と同じ関係項目を持つデータ)を特定して削除するだけで済む。すなわち、本発明によれば、削除処理でも、まとめられていない通常の構造の第七データBよりも短時間での処理が可能となる。
【0013】
また、前記データ構造において、前記第七データBは、前記関係項目ごとに、前記同一の上位項目が関連づけられた複数の検索対象項目を一検索単位でまとめた構造を有してもよい。
上述したとおり、上位項目に関連づけられた検索対象項目と関係項目とを関連づけられた新たなデータ(レコード)が入力された場合、第七データBの中を検索して、上述した更新処理が必要であるか否かを判断する必要がある。このとき、第七データBが単一のデータテーブルで構成されているような場合、その検索、判断処理に時間がかかってしまうことがある。
ここで、上述したケースにおいて、新たなレコードが入力されたときに前記更新処理が必要であるか否かを判断するためには、第七データBの中から、その関係項目と当該3つの検索対象項目のうちの他の1つの検索対象項目とが関連付けられたレコードを検索し、さらに、その関係項目と当該3つの検索対象項目のうちの残りの1つの検索対象項目とが関連付けられたレコードを検索するという検索処理を必要とする。したがって、第七データBの全体に対して2回の検索処理、すなわち、第七データBのレコード数(検索対象数)の2倍に相当するレコード数に対する検索処理、を実行する必要がある。
更に、更新処理が必要であると判断された場合には、第七データBの中から、該当する2つのレコードを削除する必要も生じる。この削除処理においても、第七データBの全体に対して、再び、これらの2つのレコードを検索する検索処理(第七データBのレコード数(検索対象数)の2倍に相当するレコード数に対する検索処理)を行い、削除対象のレコードを特定する必要がある。
これに対し、本発明における第七データBは、関係項目ごとに、同一の上位項目が関連づけられた複数の検索対象項目を一検索単位でまとめた構造となっている。ここでいう一検索単位とは、1回の検索処理によって特定できる単位であり、例えば、複数のレコードが記憶されたデータテーブルからレコード検索をする場合には1つのレコードが一検索単位であり、複数のデータファイル(データテーブル)からファイル検索をする場合には1つのデータファイルが一検索単位である。
このような構造であれば、更新処理が必要であるか否かを判断する際の検索処理において、第七データBの中から、入力された新たなデータと同じ関係項目についての検索単位(レコードやデータファイル(データテーブル)等)を1つ検索(1回検索)するだけで、更新処理が必要であるか否かを判断するのに必要な項目(第七データBにおいて当該関係項目に関連づけられたすべての検索対象項目)を特定することができる。加えて、同一の上位項目が関連づけられた複数の検索対象項目を関係項目ごとに一検索単位でまとめた構造であることから、第七データBに対して上述した検索処理を行う際の検索対象数は、まとめられていない通常の構造と比較して、まとめた分だけ少なくなる。その結果、本発明によれば、更新処理が必要であるか否かを判断する際の第七データBに対する検索処理では、通常の構造の第七データBよりも少ない検索対象数に対して、1回の検索処理を行うだけで済み、より短時間での更新処理が可能となる。
更に、更新処理が必要であると判断された場合の第七データBに対する削除処理においては、第七データBの中から、入力された新たなデータと同じ関係項目についての一検索単位を特定してこれを削除するだけで済む。すなわち、削除対象を特定するための検索処理でも、通常の構造の第七データBよりも少ない検索対象数に対して、1回の検索処理を行うだけで済み、より短時間での更新処理が可能となる。
【0014】
また、本発明は、複数の関係項目の中から指定された関係項目に関連付けられた検索対象項目を、複数の検索対象項目の中からコンピュータによって検索する情報検索装置であって、前記複数の関係項目のうちの2つ以上の関係項目に同一の上位項目を関連づけた第一データと、前記複数の検索対象項目のうち、前記同一の上位項目が関連づけられた関係項目に関係する検索対象項目に、該上位項目を関連づけた第二データと、前記第一データ及び前記第二データでは関連づけられない関係項目と検索対象項目とを関連づけた第三データと、を有し、かつ、前記第三データは、前記上位項目のいずれにも関連づけられていない関係項目と検索対象項目とを関連づけた第三データAと、前記上位項目に関連づけられた関係項目と検索対象項目とを関連づけた第三データBとに分割されたデータ構造をもつデータベースを用い、前記複数の関係項目の中から1つ以上の関係項目が指定された所定の検索条件での検索を行う場合、前記コンピュータが、前記第一データを参照し、該1つ以上の関係項目のうちの一部又は全部が関連づけられた上位項目が存在すると判断したときは、少なくとも前記第二データを検索し、前記関連づけられた上位項目が存在しないと判断したときは、前記第三データのみを検索することを特徴とするものである。
本発明によれば、データベースの更新処理が必要であるか否かの判断を行うにあたり、検索する必要のないレコードを第三データAにまとめることによって、第三データ全体ではなく、第三データの一部である第三データBだけを検索すればよい。したがって、第三データ全体を検索する必要のあった従来のデータベースよりも、検索対象となるレコード数が少なくなるので、検索時間が短くなり、更新処理に要する時間を短縮化できる。
【0015】
また、本発明は、複数の関係項目の中から指定された関係項目に関連付けられた検索対象項目を、複数の検索対象項目の中からコンピュータによって検索する情報検索装置であって、前記複数の検索対象項目のうちの2つ以上の検索対象項目に関連づけられた上位項目を、該2つ以上の検索対象項目に関係する関係項目に関連づけた第六データと、前記第六データには含まれない関係項目と該関係項目に関係する検索対象項目とを関連づけた第七データと、前記複数の検索対象項目のうちの2つ以上の検索対象項目に同一の上位項目を関連づけた第八データと、を有し、かつ、前記第七データは、前記上位項目のいずれにも関連づけられていない検索対象項目と関係項目とを関連づけた第七データAと、前記上位項目に関連づけられた検索対象項目と関係項目とを関連づけた第七データBとに分割されたデータ構造をもつデータベースを用い、前記コンピュータが、前記第六データを参照して前記指定された関係項目に関連づけられた上位項目が存在すると判断したときは、前記第八データから該上位項目に関連づけられた検索対象項目を抽出して、該検索対象項目を検索結果として出力し、前記第七データを参照して前記指定された関係項目に関係する検索対象項目が存在すると判断したときは、該検索対象項目を検索結果として出力することを特徴とする。
本発明によれば、データベースの更新処理が必要であるか否かの判断を行うにあたり、検索する必要のないレコードを第七データAにまとめることによって、第七データ全体ではなく、第七データの一部である第七データBだけを検索すればよい。したがって、第七データ全体を検索する必要のあった従来のデータベースよりも、検索対象となるレコード数が少なくなるので、検索時間が短くなり、更新処理に要する時間を短縮化できる。
【0016】
また、本発明は、複数の関係項目の中から指定された関係項目に関連付けられた検索対象項目を、複数の検索対象項目の中からコンピュータによって検索する情報検索装置に用いられるデータベースであって、前記複数の関係項目のうちの2つ以上の関係項目に同一の上位項目を関連づけた第一データと、前記複数の検索対象項目のうち、前記同一の上位項目が関連づけられた関係項目に関係する検索対象項目に、該上位項目を関連づけた第二データと、前記第一データ及び前記第二データでは関連づけられない関係項目と検索対象項目とを関連づけた第三データと、を有し、かつ、前記第三データが、前記上位項目のいずれにも関連づけられていない関係項目と検索対象項目とを関連づけた第三データAと、前記上位項目に関連づけられた関係項目と検索対象項目とを関連づけた第三データBとに分割されたデータ構造をもつデータベースの更新方法であって、前記上位項目のいずれにも関連づけられていない関係項目とこれに関連付けられた検索対象項目とが入力されたときは、該関係項目及び該検索対象項目のレコードを前記第三データAに追加し、前記上位項目に関連づけられた関係項目とこれに関連付けられた検索対象項目とが入力されたときは、前記第三データのうちの前記第三データBだけを検索し、該検索対象項目と同じ検索対象項目について、該関係項目とともに前記同一の上位項目が関連づけられる関係項目が前記第三データBに存在した場合には、該検索対象項目及び該関係項目のレコードを前記第三データBから削除するとともに、該同一の上位項目を該検索対象項目に関連づけたレコードを前記第二データに追加し、該関係項目とともに前記同一の上位項目が関連づけられる関係項目が前記第三データBに存在しなかった場合には、入力されたレコードを前記第三データBに追加する追加工程を有することを特徴とするものである。
本発明は、第一データ及び第二データでは関連づけられない関係項目と検索対象項目とを関連づけた第三データが、第三データAと第三データBとに分割されたデータ構造となっている。
第三データAは、第三データに含まれるレコードのうち、上位項目のいずれにも関連づけられていない関係項目と検索対象項目とが関連づけられたレコードを含む。このようなレコードは、そのレコードの検索対象項目と同じ検索対象項目についてのレコードが新たに入力されても、これらのレコードの関係項目が同一の上位項目に関連づけられることがない。したがって、新たなレコードが入力されたとき、第三データAを検索する必要はないので、第三データに含まれているレコードを削除するとともに第二データにレコードを追加するという更新処理が必要であるか否かの判断を行うにあたって、第三データAを検索する必要がない。
一方、第三データBは、第三データに含まれるレコードのうち、上位項目に関連づけられた関係項目と検索対象項目とを関連づけられたレコードを含む。このようなレコードは、そのレコードの検索対象項目と同じ検索対象項目についてのレコードが新たに入力されると、これらのレコードの関係項目が同一の上位項目に関連づけられ得るものである。したがって、新たなレコードが入力されたときには、前記更新処理が必要であるか否かの判断を行うにあたり、第三データBを検索することを要する。なお、第三データBは、新たなレコードが入力されて前記更新処理が必要であるか否かの判断を行う際に検索する必要のないレコードを含んでいてもよい。
本発明によれば、前記更新処理が必要であるか否かの判断を行うにあたり、検索する必要のないレコードを第三データAにまとめることによって、第三データ全体ではなく、第三データの一部である第三データBだけを検索すればよい。したがって、第三データ全体を検索する必要のあった従来のデータベースよりも、検索対象となるレコード数が少なくなるので、検索時間が短くなり、更新処理に要する時間を短縮化できる。
しかも、前記更新処理が必要であると判断されると、第三データBからレコードが削除されるため、検索対象となる第三データBのレコード数が大きく増大することはなく、経時的にも更新処理の短縮化が実現される。
【0017】
また、本発明は、複数の関係項目の中から指定された関係項目に関連付けられた検索対象項目を、複数の検索対象項目の中からコンピュータによって検索する情報検索装置に用いられるデータベースであって、前記複数の検索対象項目のうちの2つ以上の検索対象項目に関連づけられた上位項目を、該2つ以上の検索対象項目に関係する関係項目に関連づけた第六データと、前記第六データには含まれない関係項目と該関係項目に関係する検索対象項目とを関連づけた第七データと、前記複数の検索対象項目のうちの2つ以上の検索対象項目に同一の上位項目を関連づけた第八データと、を有し、かつ、前記第七データが、前記上位項目のいずれにも関連づけられていない検索対象項目と関係項目とを関連づけた第七データAと、前記上位項目に関連づけられた検索対象項目と関係項目とを関連づけた第七データBとに分割されたデータ構造をもつデータベースの更新方法であって、前記上位項目のいずれにも関連づけられていない検索対象項目とこれに関連付けられた関係項目とが入力されたときは、該検索対象項目及び該関係項目のレコードを前記第七データAに追加し、前記上位項目に関連づけられた検索対象項目とこれに関連付けられた関係項目とが入力されたときは、前記第七データのうちの前記第七データBだけを検索し、該関係項目と同じ関係項目について、該検索対象項目とともに前記同一の上位項目が関連づけられる検索対象項目が前記第七データBに存在した場合には、該関係項目及び該検索対象項目のレコードを前記第七データBから削除するとともに、該同一の上位項目を該関係項目に関連づけたレコードを前記第六データに追加し、該関係項目とともに前記同一の上位項目が関連づけられる関係項目が前記第七データBに存在しなかった場合には、入力されたレコードを前記第七データBに追加する追加工程を有することを特徴とするものである。
本発明は、第六データには含まれない関係項目と該関係項目に関係する検索対象項目とを関連づけた第七データが、第七データAと第七データBとに分割されたデータ構造となっている。
第七データAは、第七データに含まれるレコードのうち、上位項目のいずれにも関連づけられていない検索対象項目と関係項目とが関連づけられたレコードを含む。このようなレコードは、そのレコードの関係項目と同じ関係項目についてのレコードが新たに入力されても、これらのレコードの検索対象項目が同一の上位項目に関連づけられることがない。したがって、新たなレコードが入力されたとき、第七データAを検索する必要はない。したがって、新たなレコードが入力されたときに、第七データに含まれているレコードを削除するとともに第六データにレコードを追加するという更新処理が必要であるか否かの判断を行うにあたって、第七データAを検索する必要がない。
一方、第七データBは、第七データに含まれるレコードのうち、上位項目に関連づけられた検索対象項目と関係項目とを関連づけられたレコードを含む。このようなレコードは、そのレコードの関係項目と同じ関係項目についてのレコードが新たに入力されると、これらのレコードの検索対象項目が同一の上位項目に関連づけられ得るものである。したがって、新たなレコードが入力されたときには、前記更新処理が必要であるか否かの判断を行うにあたり、第七データBを検索することを要する。なお、第七データBは、新たなレコードが入力されて前記更新処理が必要であるか否かの判断を行う際に検索する必要のないレコードを含んでいてもよい。
本発明によれば、前記更新処理が必要であるか否かの判断を行うにあたり、検索する必要のないレコードを第七データAにまとめることによって、第七データ全体ではなく、第七データの一部である第七データBだけを検索すればよい。したがって、第七データ全体を検索する必要のあった従来のデータベースよりも、検索対象となるレコード数が少なくなるので、検索時間が短くなり、更新処理に要する時間を短縮化できる。
しかも、前記更新処理が必要であると判断されると、第七データBからレコードが削除されるため、検索対象となる第七データBのレコード数が大きく増大することはなく、経時的にも更新処理の短縮化が実現される。
【0018】
また、本発明は、複数の関係項目の中から指定された関係項目に関連付けられた検索対象項目を、複数の検索対象項目の中からコンピュータによって検索する情報検索装置に用いられるデータベースであって、前記複数の関係項目のうちの2つ以上の関係項目に同一の上位項目を関連づけた第一データと、前記複数の検索対象項目のうち、前記同一の上位項目が関連づけられた関係項目に関係する検索対象項目に、該上位項目を関連づけた第二データと、前記第一データ及び前記第二データでは関連づけられない関係項目と検索対象項目とを関連づけた第三データと、を有し、かつ、前記第三データが、前記上位項目のいずれにも関連づけられていない関係項目と検索対象項目とを関連づけた第三データAと、前記上位項目に関連づけられた関係項目と検索対象項目とを関連づけた第三データBとに分割されたデータ構造をもつデータベースの更新装置であって、前記上位項目のいずれにも関連づけられていない関係項目とこれに関連付けられた検索対象項目とが入力されたときは、該関係項目及び該検索対象項目のレコードを前記第三データAに追加し、前記上位項目に関連づけられた関係項目とこれに関連付けられた検索対象項目とが入力されたときは、前記第三データのうちの前記第三データBだけを検索し、該検索対象項目と同じ検索対象項目について、該関係項目とともに前記同一の上位項目が関連づけられる関係項目が前記第三データBに存在した場合には、該検索対象項目及び該関係項目のレコードを前記第三データBから削除するとともに、該同一の上位項目を該検索対象項目に関連づけたレコードを前記第二データに追加し、該関係項目とともに前記同一の上位項目が関連づけられる関係項目が前記第三データBに存在しなかった場合には、入力されたレコードを前記第三データBに追加する追加手段を有することを特徴とするものである。
本発明によれば、データベースの更新処理が必要であるか否かの判断を行うにあたり、検索する必要のないレコードを第三データAにまとめることによって、第三データ全体ではなく、第三データの一部である第三データBだけを検索すればよい。したがって、第三データ全体を検索する必要のあった従来のデータベースよりも、検索対象となるレコード数が少なくなるので、検索時間が短くなり、更新処理に要する時間を短縮化できる。
【0019】
また、本発明は、複数の関係項目の中から指定された関係項目に関連付けられた検索対象項目を、複数の検索対象項目の中からコンピュータによって検索する情報検索装置に用いられるデータベースであって、前記複数の検索対象項目のうちの2つ以上の検索対象項目に関連づけられた上位項目を、該2つ以上の検索対象項目に関係する関係項目に関連づけた第六データと、前記第六データには含まれない関係項目と該関係項目に関係する検索対象項目とを関連づけた第七データと、前記複数の検索対象項目のうちの2つ以上の検索対象項目に同一の上位項目を関連づけた第八データと、を有し、かつ、前記第七データが、前記上位項目のいずれにも関連づけられていない検索対象項目と関係項目とを関連づけた第七データAと、前記上位項目に関連づけられた検索対象項目と関係項目とを関連づけた第七データBとに分割されたデータ構造をもつデータベースの更新装置であって、前記上位項目のいずれにも関連づけられていない検索対象項目とこれに関連付けられた関係項目とが入力されたときは、該検索対象項目及び該関係項目のレコードを前記第七データAに追加し、前記上位項目に関連づけられた検索対象項目とこれに関連付けられた関係項目とが入力されたときは、前記第七データのうちの前記第七データBだけを検索し、該関係項目と同じ関係項目について、該検索対象項目とともに前記同一の上位項目が関連づけられる検索対象項目が前記第七データBに存在した場合には、該関係項目及び該検索対象項目のレコードを前記第七データBから削除するとともに、該同一の上位項目を該関係項目に関連づけたレコードを前記第六データに追加し、該関係項目とともに前記同一の上位項目が関連づけられる関係項目が前記第七データBに存在しなかった場合には、入力されたレコードを前記第七データBに追加する追加手段を有することを特徴とするものである。
本発明によれば、データベースの更新処理が必要であるか否かの判断を行うにあたり、検索する必要のないレコードを第七データAにまとめることによって、第七データ全体ではなく、第七データの一部である第七データBだけを検索すればよい。したがって、第七データ全体を検索する必要のあった従来のデータベースよりも、検索対象となるレコード数が少なくなるので、検索時間が短くなり、更新処理に要する時間を短縮化できる。
【0020】
また、本発明は、複数の関係項目の中から指定された関係項目に関連付けられた検索対象項目を、複数の検索対象項目の中からコンピュータによって検索する情報検索装置に用いられるデータベースであって、前記複数の関係項目のうちの2つ以上の関係項目に同一の上位項目を関連づけた第一データと、前記複数の検索対象項目のうち、前記同一の上位項目が関連づけられた関係項目に関係する検索対象項目に、該上位項目を関連づけた第二データと、前記第一データ及び前記第二データでは関連づけられない関係項目と検索対象項目とを関連づけた第三データと、を有し、かつ、前記第三データが、前記上位項目のいずれにも関連づけられていない関係項目と検索対象項目とを関連づけた第三データAと、前記上位項目に関連づけられた関係項目と検索対象項目とを関連づけた第三データBとに分割されたデータ構造をもつデータベースを更新する工程をコンピュータに実行させるためのデータベース更新用プログラムであって、前記上位項目のいずれにも関連づけられていない関係項目とこれに関連付けられた検索対象項目とが入力されたときは、該関係項目及び該検索対象項目のレコードを前記第三データAに追加し、前記上位項目に関連づけられた関係項目とこれに関連付けられた検索対象項目とが入力されたときは、前記第三データのうちの前記第三データBだけを検索し、該検索対象項目と同じ検索対象項目について、該関係項目とともに前記同一の上位項目が関連づけられる関係項目が前記第三データBに存在した場合には、該検索対象項目及び該関係項目のレコードを前記第三データBから削除するとともに、該同一の上位項目を該検索対象項目に関連づけたレコードを前記第二データに追加し、該関係項目とともに前記同一の上位項目が関連づけられる関係項目が前記第三データBに存在しなかった場合には、入力されたレコードを前記第三データBに追加する追加工程を、前記コンピュータに実行させることを特徴とするものである。
本発明によれば、データベースの更新処理が必要であるか否かの判断を行うにあたり、検索する必要のないレコードを第三データAにまとめることによって、第三データ全体ではなく、第三データの一部である第三データBだけを検索すればよい。したがって、第三データ全体を検索する必要のあった従来のデータベースよりも、検索対象となるレコード数が少なくなるので、検索時間が短くなり、更新処理に要する時間を短縮化できる。
【0021】
また、本発明は、複数の関係項目の中から指定された関係項目に関連付けられた検索対象項目を、複数の検索対象項目の中からコンピュータによって検索する情報検索装置に用いられるデータベースであって、前記複数の検索対象項目のうちの2つ以上の検索対象項目に関連づけられた上位項目を、該2つ以上の検索対象項目に関係する関係項目に関連づけた第六データと、前記第六データには含まれない関係項目と該関係項目に関係する検索対象項目とを関連づけた第七データと、前記複数の検索対象項目のうちの2つ以上の検索対象項目に同一の上位項目を関連づけた第八データと、を有し、かつ、前記第七データが、前記上位項目のいずれにも関連づけられていない検索対象項目と関係項目とを関連づけた第七データAと、前記上位項目に関連づけられた検索対象項目と関係項目とを関連づけた第七データBとに分割されたデータ構造をもつデータベースを更新する工程をコンピュータに実行させるためのデータベース更新用プログラムであって、前記上位項目のいずれにも関連づけられていない検索対象項目とこれに関連付けられた関係項目とが入力されたときは、該検索対象項目及び該関係項目のレコードを前記第七データAに追加し、前記上位項目に関連づけられた検索対象項目とこれに関連付けられた関係項目とが入力されたときは、前記第七データのうちの前記第七データBだけを検索し、該関係項目と同じ関係項目について、該検索対象項目とともに前記同一の上位項目が関連づけられる検索対象項目が前記第七データBに存在した場合には、該関係項目及び該検索対象項目のレコードを前記第七データBから削除するとともに、該同一の上位項目を該関係項目に関連づけたレコードを前記第六データに追加し、該関係項目とともに前記同一の上位項目が関連づけられる関係項目が前記第七データBに存在しなかった場合には、入力されたレコードを前記第七データBに追加する追加工程を、前記コンピュータに実行させることを特徴とするものである。
本発明によれば、データベースの更新処理が必要であるか否かの判断を行うにあたり、検索する必要のないレコードを第七データAにまとめることによって、第七データ全体ではなく、第七データの一部である第七データBだけを検索すればよい。したがって、第七データ全体を検索する必要のあった従来のデータベースよりも、検索対象となるレコード数が少なくなるので、検索時間が短くなり、更新処理に要する時間を短縮化できる。
【0022】
なお、上述したプログラムは、CD-ROM等の記録媒体に記録された状態で配布したり、入手したりすることができる。また、上述したプログラムを乗せ、所定の送信装置により送信された信号を、公衆電話回線や専用線、その他の通信網等の伝送媒体を介して配信したり、受信したりすることでも、配布、入手が可能である。この配信の際、伝送媒体中には、コンピュータプログラムの少なくとも一部が伝送されていればよい。すなわち、コンピュータプログラムを構成するすべてのデータが、一時に伝送媒体上に存在している必要はない。上述したプログラムを乗せた信号とは、コンピュータプログラムを含む所定の搬送波に具現化されたコンピュータデータ信号である。また、所定の送信装置からコンピュータプログラムを送信する送信方法には、プログラムを構成するデータを連続的に送信する場合も、断続的に送信する場合も含まれる。
【発明の効果】
【0023】
本発明によれば、データベースの更新処理に要する時間を短縮化することができる。
【図面の簡単な説明】
【0024】
【
図1】実施形態1における情報検索装置を模式的に示す外観図である。
【
図2】同情報検索装置の構成を示すブロック図である。
【
図3】同情報検索装置が用いるデータベースで管理する、顧客識別番号1,2,3,4,5,・・・と、その顧客が過去に購入した商品の商品名a,b,c,dとの関係をまとめた表の一例である。
【
図4】同情報検索装置が用いるデータベースで管理される商品名と上位項目との関係をまとめた表の一例である。
【
図5】同情報検索装置が用いるデータベースで管理される、顧客識別番号1,2,3,4,5,・・・と、商品名a,b,c,d又は上位項目W,X,Y,Zとの関係をまとめた表の一例である。
【
図6】同情報検索装置が用いるデータベースの第二データテーブルのデータ構造を示す説明図である。
【
図7】同情報検索装置が用いるデータベースの第三データテーブルのデータ構造を示す説明図である。
【
図8】(a)は、同第三データテーブルを2つに分割したうちの一方の第三データテーブルAのデータ構造を示す説明図であり、(b)は、同第三データテーブルを2つに分割したうちの他方の第三データテーブルBのデータ構造を示す説明図である。
【
図9】実施形態1におけるAND条件での検索処理の流れを示すフローチャートである。
【
図10】実施形態1における単一条件での検索処理の流れを示すフローチャートである。
【
図11】実施形態1におけるOR条件での検索処理の流れを示すフローチャートである。
【
図12】実施形態1におけるデータベースの更新処理の追加工程の流れを示すフローチャートである。
【
図13】実施形態1におけるデータベースの更新処理の流れを示すフローチャートである。
【
図14】変形例1における情報検索装置が用いるデータベースの第四データテーブルのデータ構造を示す説明図である。
【
図15】同情報検索装置が用いるデータベースの第五データテーブルのデータ構造を示す説明図である。
【
図16】同情報検索装置が用いるデータベースの第一データテーブルのデータ構造を示す説明図である。
【
図17】同情報検索装置が用いるデータベースの第二データテーブルのデータ構造を示す説明図である。
【
図18】検索されるデータテーブルと階層とを関連づけたデータテーブルのデータ構造を示す説明図である。
【
図19】効果確認試験における商品名a,b,cと上位項目Zとを関連づけた第一データテーブルを示す説明図である。
【
図20】効果確認試験における、顧客識別番号1~1000のうち、上位項目Zが関連づけられた3つの商品名a,b,cに共通して関係する顧客識別番号1~500に、当該上位項目Zを関連づけた第二データテーブルを示す説明図である。
【
図21】効果確認試験における、顧客識別番号1~1000のうち、いずれの上位項目Zにも関連づけられていない商品名dに関係する顧客識別番号1~1000と当該商品名dとを関連づけた第三データテーブルAを示す説明図である。
【
図22】効果確認試験における、顧客識別番号1~1000のうち、同一の上位項目Zに関連づけられている商品名a,b,cの一部のみに関係する顧客識別番号501~800,601~900に、それぞれに対応する商品名b,cを関連づけた第三データテーブルBを示す説明図である。
【
図23】比較のため、
図21に示す第三データテーブルAと
図22に示す第三データテーブルBとを統合した1つのデータテーブル(第三データテーブル)を示す説明図である。
【
図24】同効果確認試験後における第二データテーブルの状態を示す説明図である。
【
図25】同効果確認試験後における第三データテーブルBの状態を示す説明図である。
【
図26】同効果確認試験後における第三データテーブルの状態を示す説明図である。
【
図27】実施形態2における、顧客識別番号と、その顧客が過去に購入した商品の商品名との関係をまとめた表の一例である。
【
図28】実施形態2における商品名a,bと上位項目Wとを関連づけた第八データテーブルを示す説明図である。
【
図29】実施形態2における、顧客識別番号1~70000と、商品名a,b又は上位項目Wとの関係をまとめたデータテーブルを示す説明図である。
【
図30】実施形態2における、顧客識別番号1~70000のうち、上位項目Wが関連づけられた2つの商品名a,bに共通して関係する顧客識別番号20001~40000に、当該上位項目Wを関連づけたデータテーブルを示す説明図である。
【
図31】(a)は、実施形態2における、顧客識別番号1~70000のうち、上位項目Wが関連づけられていないで商品名a,b,cに関係する顧客識別番号1~20000,40001~70000に、当該商品名a,b,cを関連づけた第七データテーブルを、2つに分割したうちの一方の第七データテーブルAのデータ構造を示す説明図であり、(b)は、同第七データテーブルを2つに分割したうちの他方の第七データテーブルBのデータ構造を示す説明図である。
【
図32】実施形態2における単一条件での検索処理の流れを示すフローチャートである。
【
図33】実施形態3における第一データテーブルを示す一例である。
【
図34】実施形態3における第二データテーブルを示す一例である。
【
図35】実施形態3における第三データテーブルAを示す一例である。
【
図36】(a)及び(b)は、実施形態3における第三データテーブルBを構成する各上位項目別テーブルを示す一例である。
【
図37】(a)は、第三データテーブルBを構成する顧客識別番号201~300についての上位項目・顧客識別番号別テーブルBP201~BP300の内容を示す表であり、(b)は、第三データテーブルBを構成する顧客識別番号301~400についての上位項目・顧客識別番号別テーブルBP301~BP400の内容を示す表である。
【発明を実施するための形態】
【0025】
〔実施形態1〕
以下、本発明の一実施形態(以下、本実施形態を「実施形態1」という。)を、添付図面を参照しながら説明する。
なお、本実施形態1は、スーパーや百貨店などの店舗において顧客の商品購入履歴を管理するためのデータベースを用い、複数の商品名(関係項目)の中から指定された商品名に関連付けられた顧客(当該商品名の商品を購入した顧客)の識別番号(検索対象項目)を、複数の顧客識別番号の中からコンピュータによって検索する検索処理を行う例について説明する。なお、複数の関係項目の中から指定された関係項目に関連付けられた検索対象項目を複数の検索対象項目の中からコンピュータによって検索するためのデータベースを用いるのであれば、どのようなものであってもよい。
【0026】
また、以下の説明では、リレーショナルデータベースの例で説明するが、NoSQLデータベースなどの他のデータベースにも適用可能である。なお、NoSQLデータベースでいえば、以下で述べるデータテーブルはバケットやコレクションなどに対応する。
【0027】
図1は、本実施形態1における情報検索装置100を模式的に示す外観図である。
図2は、本実施形態1における情報検索装置100の構成を示すブロック図である。
本実施形態1における情報検索装置100は、汎用のパーソナルコンピュータあるいはサーバ装置(以下「コンピュータ装置」という。)に、所定のデータベースソフト(検索用プログラム、データベース更新用プログラム)をインストールしたものである。なお、情報検索装置100は、このような汎用のコンピュータ装置に限らず、情報検索専用の装置であってもよい。
【0028】
本実施形態1の情報検索装置100は、主に、装置本体101と、表示手段としてのモニター102と、キーボード103やポインティングデバイス104等の操作受付手段としての入力装置とから構成される。装置本体101は、主に、CPU(Central Processing Unit)等からなる演算部101aと、ROM(Read Only Memory)やRAM(Random Access Memory)あるいはHDD(Hard Disk Drive)等の記憶装置からなる記憶部101bとから構成されるが、そのほか、通信インターフェース等からなる通信部など、汎用のコンピュータ装置が備える一般的な機能も備えている。
【0029】
装置本体101の記憶部101bには、情報検索装置100の機能を発揮させるためのデータベースソフトを含む各種コンピュータプログラムが記憶されている。また、記憶部101bは、データ記憶手段として機能し、後述するデータ構造をもつデータベースも記憶される。装置本体101の演算部101aは、記憶部101bに記憶されている各種コンピュータプログラムをCPUで実行することにより、本実施形態1の情報検索装置100としての動作に必要な各種機能を実現する。
【0030】
特に、本実施形態1の演算部101aは、データベースソフトに含まれる検索用プログラムをCPUで実行することにより、記憶部101bに記憶されたデータベースを用いて、指示された商品名(関係項目)に関連付けられた顧客識別番号(検索対象項目)を検索する検索処理を行う。また、本実施形態1の演算部101aは、データベースソフトに含まれるデータベース更新用プログラムをCPUで実行することにより、追加入力された顧客識別番号(検索対象項目)とこれに関係する商品名(関係項目)のレコードを、データベースに登録して更新する更新する処理を行う。また、本実施形態1の演算部101aは、データベースソフトに含まれるデータベース更新用プログラムをCPUで実行することにより、追加入力された顧客識別番号(検索対象項目)とこれに関係する商品名(関係項目)に応じて所定の上位項目作成条件を満たすこととなった2以上の商品名(関係項目)に対し、同一の上位項目を関連づけてデータベースを更新し、新たなデータベースを作成(製造)する処理も行う。
【0031】
図3は、本実施形態1における情報検索装置100が用いるデータベースで管理する、顧客識別番号1,2,3,4,5,・・・(検索対象項目)と、その顧客が過去に購入した商品の商品名a,b,c,d(関係項目)との関係をまとめた表の一例である。この表によれば、顧客識別番号1の顧客は商品名a,b,cの商品を購入し、顧客識別番号2の顧客は商品名a,cの商品を購入し、顧客識別番号3の顧客は商品名bの商品を購入し、顧客識別番号4の顧客は商品名a,cの商品を購入し、顧客識別番号5の顧客は商品名aの商品を購入し、顧客識別番号10の顧客は商品名dの商品を購入したことが管理されている。
【0032】
従来の一般的なデータベースでは、
図3に示す表のようなデータテーブルを作成し、そのデータテーブルに対して検索処理を行っていた。この場合、顧客識別番号1~5の顧客の購入商品分だけでも、レコード数は9個であり、例えば、商品名aの商品を購入した顧客の識別番号を検索するときは、9個のレコード数を検索する必要がある。
【0033】
図4は、本実施形態1における情報検索装置100が用いるデータベースで管理される商品名(関係項目)と上位項目との関係をまとめた表の一例である。
本実施形態1においては、所定の2つ以上の商品名(関係項目)を上位項目にグループ化する。
図4の表の例では、商品名aと商品名bを上位項目Wにグループ化し、商品名aと商品名cを上位項目Xにグループ化し、商品名bと商品名cを上位項目Yにグループ化し、商品名aと商品名bと商品名cを上位項目Zにグループ化している。
【0034】
図5は、本実施形態1における情報検索装置100が用いるデータベースで管理される、顧客識別番号1,2,3,4,5,・・・(検索対象項目)と、商品名a,b,c,d(関係項目)又は上位項目W,X,Y,Zとの関係をまとめた表の一例である。
仮に
図5に示す表のようなデータテーブルを作成し、そのデータテーブルに対して検索処理を行った場合、顧客識別番号1~5の顧客の購入商品分だけで見ると、レコード数は5個であり、
図3に示す表のようなデータテーブルを用いる従来の一般的なデータベースよりも、検索するレコード数が少なくて済む。このように検索するレコード数を少なくできれば、1つの商品名(関係項目)を指定して顧客識別番号を検索する場合でも、2つ以上の商品名(関係項目)を指定してOR条件やAND条件の検索処理を行う場合でも、検索処理の高速化を図ることができる。
【0035】
ただし、
図5に示す表のようなデータテーブルに対する検索処理の場合、1つの商品名(関係項目)を指定して顧客識別番号(検索対象項目)を検索するときでも、2つ以上の商品名をAND条件で顧客識別番号を検索するときでも、2つ以上の商品名をOR条件で顧客識別番号を検索するときでも、検索するレコード数は同じである。
【0036】
本実施形態1においては、以下のようなデータ構造をもつデータベースを用いることで、2つ以上の商品名(関係項目)をAND条件で顧客識別番号を検索する場合の検索処理速度の期待値を向上させる。
【0037】
図6は、本実施形態1における情報検索装置100が用いるデータベースの第二データとしての第二データテーブルのデータ構造を示す説明図である。
図6に示す第二データテーブルは、複数の顧客識別番号1,2,3,4,5,・・・(検索対象項目)のうち、同一の上位項目W,X,Y,Zが関連づけられた商品名a,b,c(関係項目)の全部に関係する顧客識別番号1,2,4,6,7,・・・に、当該上位項目W,X,Y,Zを関連づけたデータである。第二データテーブルは記憶部101bに記憶されており、演算部101aは、検索用プログラムを実行して第二データテーブルから検索を行うことができる。
【0038】
図7は、情報検索装置100が用いるデータベースの第三データとしての第三データテーブルのデータ構造を示す説明図である。
図8(a)及び(b)は、第三データテーブルを2つに分割して得られる第三データAとしての第三データテーブルA及び第三データBとしての第三データテーブルBのデータ構造を示す説明図である。
図7に示す第三データテーブルは、複数の顧客識別番号1,2,3,4,5,・・・(検索対象項目)のうち、同一の上位項目W,X,Y,Zが関連づけられた商品名a,b,c(関係項目)の一部のみに関係する顧客識別番号3,5,8,・・・、及び、同一の上位項目W,X,Y,Zが関連づけられた商品名a,b,c(関係項目)のいずれにも関係しない顧客識別番号10に、当該商品名d(関係項目)を関連づけたデータである。本実施形態の第三データテーブルは、
図8(a)及び(b)に示すように、第三データテーブルA及び第三データテーブルBに分割された状態で、記憶部101bに記憶されており、演算部101aは、検索用プログラムを実行して、第三データテーブルA及び第三データテーブルB(以下、これらをまとめて「第三データテーブル」ともいう。)から検索を行うことができる。
【0039】
図9は、本実施形態1におけるAND条件での検索処理の流れを示すフローチャートである。
例えば、商品名aと商品名bのAND条件で両商品を購入したことのある顧客識別番号を検索する場合を考える。入力装置103,104をユーザーが操作するなどして、AND条件で検索する商品名aと商品名bが入力された場合(S1)、演算部101aは、検索用プログラムを実行し、まず、
図4に示す表のような関連づけがなされた第一データとしての第一データテーブルを参照し(S2)、商品名aと商品名bの2つの商品名をグループ化した上位項目が存在するか否かを判断する(S3)。この第一データテーブルは、記憶部101bに記憶されている。
【0040】
ここでは、商品名aと商品名bの2つの商品名をグループ化した上位項目Wが存在するので(S3のYes)、演算部101aは、
図6に示す第二データテーブルの全体から、当該上位項目Wに関連づけられた顧客識別番号を検索する(S4)。そして、その検索結果に係る顧客識別番号6を出力する(S6)。この出力は、検索結果に係る顧客識別番号そのものをモニター102に表示させるものでもよいが、例えば、顧客識別番号6に関連づけれた各種顧客情報(性別、年齢層など)を別のデータテーブルから読み出しあるいはそれらの読み出した結果に様々な分析や加工を加えてうえでモニター102に表示させるなど、検索結果に関連づけられた他の情報を出力するものであってもよい。また、出力方法は、モニター102に表示する方法に限らず、例えば、通信部からネットワークを通じて外部装置へ送信する方法や、コンピュータ内部の記憶装置に記録させる方法などの他の出力方法であってもよい。
【0041】
一方で、もし商品名aと商品名bの2つの商品名をグループ化した上位項目が存在しない場合には(S3のNo)、演算部101aは、
図7に示す第三データテーブル(すなわち、
図8(a)及び(b)に示す第三データテーブルA及び第三データテーブルB)の全体から、当該2つの商品名aと商品名bに関連づけられた顧客識別番号をAND条件で検索し(S5)、その検索結果を出力することになる(S6)。
【0042】
本実施形態1によれば、指定された2つの商品名aと商品名b(関係項目)の全部が上位項目Wに関連づけられた2つの商品名a,bと一致する場合には、
図6に示す第二データテーブルに対し、その上位項目Wに関連づけられた顧客識別番号(検索対象項目)を検索するだけで(第三データテーブルに対する検索処理を行わずに)、検索処理を完了する。第二データテーブルは、上位項目W,X,Y,Zが関連づけられた2以上の商品名の全部に関係する顧客識別番号しか含まない。したがって、
図3に示す表のようなデータテーブルに対して検索処理を行う従来の場合はもとより、
図5に示す表のようなデータテーブルに対して検索処理を行う場合よりも、検索するレコード数が少なくて済み、検索処理速度を高速化できる。
【0043】
また、指定された2つの商品名(関係項目)の全部が上位項目Wに関連づけられた2つの商品名a,bと一致しない場合には、
図7に示す第三データテーブル(すなわち、
図8(a)及び(b)に示す第三データテーブルA及び第三データテーブルB)に対し、その2つの商品名に関連づけられた顧客識別番号(検索対象項目)を検索するだけで(第二データテーブルに対する検索処理を行わずに)、検索処理を完了する。第三データテーブルは、第二データテーブルに含まれている関連性をもった顧客識別番号(検索対象項目)と商品名(関係項目)とが関連づけられたレコードを含まないので、そのレコード数は少なく、検索処理速度を高速化できる。
【0044】
このように、いずれの場合であってもAND条件の検索処理が高速化するので、本実施形態1に係るデータ構造をもったデータベースを用いた場合の検索処理速度の期待値を向上させることができる。
【0045】
特に、本実施形態1によれば、検索の際にAND条件で指定される頻度が高いと見込まれる2つ以上の商品名(関係項目)を上位項目に適切に関連づけることで、第二データテーブルに対する検索処理の実行頻度を高めることができる。第二データテーブルに対する検索処理(S4)は、単一条件での検索処理であるため、レコード数が同じである場合でさえも、AND条件での検索を行う第三データテーブルに対する検索処理(S5)よりも高速な検索が可能である。したがって、検索処理速度の期待値は、より一層向上する。
【0046】
また、本実施形態1においては、上述したデータ構造をもつデータベースを用いることで、1つの商品名(関係項目)に関係する顧客識別番号を単一条件で検索する検索処理についても、同様に、検索処理速度が向上する。
【0047】
図10は、本実施形態1における単一条件での検索処理の流れを示すフローチャートである。
例えば、商品名aの単一条件で、その商品を購入したことのある顧客識別番号を検索する場合を考える。入力装置103,104をユーザーが操作するなどして商品名aが入力された場合(S11)、演算部101aは、検索用プログラムを実行し、まず、
図4に示す記憶部101b内の第一データテーブルを参照し(S12)、商品名aに関連づけられた上位項目が存在するか否かを判断する(S13)。
【0048】
ここでは、商品名aに関連づけられている上位項目W,X,Zが存在するので(S13のYes)、演算部101aは、
図6に示す第二データテーブルの全体から、これらの上位項目W,X,Zに関連づけられた顧客識別番号をOR条件で検索する(S14)。ただし、商品名aが関連づけられている上位項目が1つだけしか存在しない場合には、演算部101aは、第二データテーブルの全体から、当該1つの上位項目に関連づけられた顧客識別番号を単一条件で検索することになる。更に、演算部101aは、
図7に示す第三データテーブル(すなわち、
図8(a)及び(b)に示す第三データテーブルA及び第三データテーブルB)についても、商品名aに関連づけられた顧客識別番号を単一条件で検索する(S15)。そして、これらの検索結果に係る顧客識別番号1,2,4,5,6を出力する(S16)。
【0049】
一方で、もし商品名aに関連づけられた上位項目が存在しない場合には(S13のNo)、演算部101aは、
図7に示す第三データテーブル(すなわち、
図8(a)及び(b)に示す第三データテーブルA及び第三データテーブルB)の全体から、商品名aに関連づけられた顧客識別番号を単一条件で検索し(S15)、その検索結果に係る顧客識別番号を出力する(S16)。
【0050】
本実施形態1によれば、指定された1つの商品名a(関係項目)に関連づけられた上位項目が存在しない場合には、
図7に示す第三データテーブル(すなわち、
図8(a)及び(b)に示す第三データテーブルA及び第三データテーブルB)に対し、その1つの商品名aに関連づけられた顧客識別番号(検索対象項目)を単一条件で検索するだけで(第二データテーブルに対する検索処理を行わずに)、検索処理を完了する。第三データテーブルは、上述したように、第二データテーブルに含まれている関連性をもった顧客識別番号(検索対象項目)と商品名(関係項目)とが関連づけられたレコードを含まないので、
図3に示す表のようなデータテーブルに対して検索処理を行う従来の場合はもとより、
図5に示す表のようなデータテーブルに対して検索処理を行う場合よりも、検索するレコード数が少なくて済み、検索処理速度を高速化できる。
【0051】
また、指定された1つの商品名a(関係項目)に関連づけられた上位項目が存在する場合には、
図6に示す第二データテーブルと
図7に示す第三データテーブル(すなわち、
図8(a)及び(b)に示す第三データテーブルA及び第三データテーブルB)の両方に対して検索処理を行うことになる。このときのレコード数の合計は、
図3に示す表のようなデータテーブルに対して検索処理を行う従来の場合と比較すると少ないので検索処理速度を高速化できるが、
図5に示す表のようなデータテーブルに対して検索処理を行う場合と比較すると、レコード数は同じであり、レコード数の減少による検索処理速度の高速化を図ることはできない。
【0052】
ただし、
図5に示す表のようなデータテーブルに対して検索処理を行う場合には、OR条件の項目数が、上位項目W,X,Zと商品名aの合計4つであるのに対し、本実施形態1の場合のOR条件の項目数は、
図6に示す第二データテーブルに対する検索処理の際の上位項目W,X,Zの3つである。したがって、本実施形態1の場合に必要となるOR条件での検索処理(
図6に示す第二データテーブルに対する検索処理)は、
図5に示す表のようなデータテーブルに対するOR条件での検索処理と比べて、OR条件の項目数が少なく、かつ、OR条件で検索するレコード数も少ない。OR条件の項目数が少ないほどOR条件での検索処理時間の増加(オーバーヘッド)が少なくて済み、また、OR条件で検索するレコード数が少ないほどOR条件でのオーバーヘッドが少なくて済む。よって、本実施形態1によれば、
図5に示す表のようなデータテーブルに対して検索処理を行う場合と比較しても、検索処理速度を高速化できる。
【0053】
更に、本実施形態1においては、上述したデータ構造をもつデータベースを用いることで、2つ以上の商品名(関係項目)に関係する顧客識別番号をOR条件で検索する検索処理についても、同様に、検索処理速度が向上する。
【0054】
図11は、本実施形態1におけるOR条件での検索処理の流れを示すフローチャートである。
例えば、商品名aと商品名bのOR条件でいずれかの商品を購入したことのある顧客識別番号を検索する場合を考える。入力装置103,104をユーザーが操作するなどして、OR条件で検索する商品名aと商品名bが入力された場合(S21)、演算部101aは、検索用プログラムを実行し、まず、
図4に示す記憶部101b内の第一データテーブルを参照して(S22)、商品名a又は商品名bに関連づけられた上位項目が存在するか否かを判断する(S23)。
【0055】
ここでは、商品名aに関連づけられている上位項目としてW,X,Zが存在し、商品名bに関連づけられている上位項目としてW,Y,Zが存在するので(S23のYes)、演算部101aは、
図6に示す第二データテーブルの全体から、これらの上位項目W,X,Y,Zに関連づけられた顧客識別番号をOR条件で検索する(S24)。ただし、商品名a又は商品名bが関連づけられている上位項目が1つだけしか存在しない場合には、演算部101aは、第二データテーブルの全体から、当該1つの上位項目に関連づけられた顧客識別番号を単一条件で検索することになる。更に、演算部101aは、
図7に示す第三データテーブル(すなわち、
図8(a)及び(b)に示す第三データテーブルA及び第三データテーブルB)についても、商品名aと商品名bに関連づけられた顧客識別番号をOR条件で検索する(S25)。そして、これらの検索結果に係る顧客識別番号を出力する(S26)。
【0056】
一方で、もし商品名a又は商品名bに関連づけられた上位項目が存在しない場合には(S23のNo)、演算部101aは、
図7に示す第三データテーブル(すなわち、
図8(a)及び(b)に示す第三データテーブルA及び第三データテーブルB)の全体から、商品名aと商品名bに関連づけられた顧客識別番号をOR条件で検索する(S25)。そして、これらの検索結果に係る顧客識別番号を出力する(S26)。
【0057】
本実施形態1によれば、指定された2つの商品名a又は商品名b(関係項目)に関連づけられた上位項目が存在しない場合には、
図7に示す第三データテーブル(すなわち、
図8(a)及び(b)に示す第三データテーブルA及び第三データテーブルB)に対し、その2つの商品名aと商品名bに関連づけられた顧客識別番号(検索対象項目)をOR条件で検索するだけで(第二データテーブルに対する検索処理を行わずに)、検索処理を完了する。第三データテーブルは、上述したように、第二データテーブルに含まれている関連性をもった顧客識別番号(検索対象項目)と商品名(関係項目)とが関連づけられたレコードを含まないので、
図3に示す表のようなデータテーブルに対して検索処理を行う従来の場合はもとより、
図5に示す表のようなデータテーブルに対して検索処理を行う場合よりも、検索するレコード数が少なくて済み、また、OR条件の項目数も少なくて済むので、検索処理速度を高速化できる。
【0058】
また、指定された2つの商品名a又は商品名b(関係項目)に関連づけられた上位項目が存在する場合には、
図6に示す第二データテーブルと
図7に示す第三データテーブル(すなわち、
図8(a)及び(b)に示す第三データテーブルA及び第三データテーブルB)の両方に対して検索処理を行うことになる。このときのレコード数の合計は、
図3に示す表のようなデータテーブルに対して検索処理を行う従来の場合と比較すると少ないので検索処理速度を高速化できるが、
図5に示す表のようなデータテーブルに対して検索処理を行う場合と比較すると、レコード数は同じであり、レコード数の減少による検索処理速度の高速化を図ることはできない。
【0059】
ただし、
図5に示す表のようなデータテーブルに対して検索処理を行う場合には、OR条件の項目数が、上位項目W,X,Y,Zと商品名a,bの合計6つであるのに対し、本実施形態1の場合のOR条件の項目数は、
図6に示す第二データテーブルに対する検索処理の際の上位項目W,X,Y,Zの4つと、
図7に示す第三データテーブル(すなわち、
図8(a)及び(b)に示す第三データテーブルA及び第三データテーブルB)に対する検索処理の際の商品名a,bの2つである。本実施形態1の場合に必要となるOR条件での検索処理は、
図5に示す表のようなデータテーブルに対するOR条件での検索処理と比べて、個々の検索処理におけるOR条件の項目数が少なく、かつ、個々の検索処理でOR条件で検索するレコード数も少ない。OR条件の項目数が少ないほどOR条件での検索処理時間の増加(オーバーヘッド)が少なくて済み、また、OR条件で検索するレコード数が少ないほどOR条件でのオーバーヘッドが少なくて済むので、本実施形態1によれば、
図5に示す表のようなデータテーブルに対して検索処理を行う場合と比較しても、検索処理速度を高速化できる。
【0060】
以上のように、本実施形態1によれば、
図3に示す表のようなデータテーブルに対して検索処理を行う従来の場合はもとより、
図5に示す表のようなデータテーブルに対して検索処理を行う場合と比較しても、単一条件、AND条件、OR条件のいずれの条件での検索処理速度についても高速化することが可能である。
【0061】
なお、本実施形態1においては、
図4で示したように、所定の2つ以上の商品名(関係項目)を上位項目にグループ化するが、そのグループ化の条件(上位項目作成条件)は適宜設定することができる。例えば、2つ以上の商品名(関係項目)の全部に関係している顧客識別番号(検索対象項目)の数が所定数以上存在する場合に(あるいはデータ蓄積の進行に伴って一定数以上になった時点で)、当該2つ以上の商品名(関係項目)を上位項目にグループ化するという条件としてもよい。この場合、
図6に示す第二データテーブルに登録されるレコード数が、
図7に示す第三データテーブル(すなわち、
図8(a)及び(b)に示す第三データテーブルA及び第三データテーブルB)に登録されるレコード数に対して相対的に増えることで、より高速な検索処理が実現可能となる。また、例えば、過去の検索処理における指定された商品名(関係項目)の履歴などから、今後に指定される2つ以上の商品名(関係項目)のAND条件を見込み(推定し)、今後AND条件で検索される頻度が高いと推定される2つ以上の商品名(関係項目)を上位項目にグループ化するという条件としてもよい。この場合、
図6に示す第二データテーブルのみを用いた検索処理(第三データテーブルを用いない検索処理)の頻度が増える結果、AND条件での検索処理速度の高速化を図ることができる。
【0062】
また、本実施形態1は、指定される2つ以上の商品名(関係項目)がAND条件で検索されるときの検索処理速度を高速化する例であったが、指定される2つ以上の商品名(関係項目)がOR条件で検索されるときの検索処理速度を高速化することも可能である。この場合、第二データテーブルは、例えば、第一データテーブルにおいて同一の上位項目に関連づけられた2つ以上の商品名(関係項目)の少なくとも1つに関係する検索対象項目を含むように構築すればよい。
【0063】
次に、本実施形態1におけるデータ構造をもったデータベースの更新方法(製造方法)について説明する。
本実施形態1のようにスーパーや百貨店などの店舗において顧客の商品購入履歴を管理するためのデータベースは、新たなデータが日々追加されていき、また必要に応じて古いデータが日々削除されていく。本実施形態1では、ユーザーが入力装置103,104を用いた手入力により顧客識別番号とその顧客が購入した商品名とを入力することで、
図6に示す第二データテーブルや
図7に示す第三データテーブル(すなわち、
図8(a)及び(b)に示す第三データテーブルA及び第三データテーブルB)が更新される。新たなデータの入力方法は、このような手入力に限らず、例えば、顧客識別番号とその顧客が購入した商品名とのデータを店舗のレジシステムから送信し、これを情報検索装置100の通信部で受信することで、入力する方法であってもよい。なお、入力タイミングは、例えば、1件の新規データが発生するたびに入力するようにしてもよいし、複数件の新規データを定期的に入力するようにしてもよい。
【0064】
新規のデータ(レコード)が入力されたとき、第三データテーブルに含まれていたレコードを削除するとともに、第二データテーブルにレコードを追加するという第二データテーブル追加工程を実施する必要がある場合がある。例えば、第三データテーブルには、顧客識別番号3及び商品名bのレコードが含まれているところ、新規に、顧客識別番号3及び商品名aのレコードが入力された場合である。この場合、第一データテーブルに示すように商品名aと商品名bは上位項目Wでグループ化されているため、新規のレコードが追加されることにより、顧客識別番号3は、同一の上位項目Wが関連づけられた商品名a,bの全部に関係することになる。その結果、顧客識別番号3に上位項目Wを関連づけたレコードを、新たに、第二データテーブルに追加する必要がある。そして、これに伴い、第三データテーブルに含まれていた顧客識別番号3及び商品名bのレコードは、第三データテーブルから削除する必要がある。
【0065】
このような第二データテーブル追加工程を実施するにあたっては、入力される新たなレコードごとに、この第二データテーブル追加工程(第二データテーブルにレコードを追加するとともに、第三データテーブルに含まれていたレコードを削除する工程)が必要であるか否かを判断する必要がある。この判断においては、新たなレコードに基づき、第三データテーブルに含まれるレコードを検索して前記第二データテーブル追加工程が必要か否かを判断する必要があり、第三データテーブルに含まれるレコード数が多くなると、第三データテーブルに対する検索に時間を要し、データベースの更新処理に時間がかかってしまう。
【0066】
そこで、本実施形態1においては、第三データテーブルを、
図8(a)及び(b)に示すように、第三データテーブルAと第三データテーブルBとに分割したデータ構造としている。
【0067】
第三データテーブルAは、第三データテーブル全体に含まれるレコードのうち、上位項目W,X,Y,Zのいずれにも関連づけられていない関係項目である商品名d,・・・と検索対象項目である顧客識別番号10,・・・とが関連づけられたレコードを含む。このようなレコードは、例えば、そのレコードの顧客識別番号10と同じ顧客識別番号10についてのレコードが新たに入力されても、これらのレコードの商品名dが同一の上位項目に関連づけられることがない。したがって、新たなレコードが入力されたとき、第三データテーブルAを検索する必要はないので、上述の第二データテーブル追加工程が必要であるか否かの判断を行うにあたって、第三データテーブルAを検索する必要がない。
【0068】
一方、第三データテーブルBは、第三データテーブル全体に含まれるレコードのうち、上位項目W,X,Y,Zに関連づけられた関係項目である商品名a,b,cと検索対象項目である顧客識別番号3,5,8,・・・とを関連づけられたレコードを含む。このようなレコードは、例えば、そのレコードの顧客識別番号3と同じ顧客識別番号3について、第三データテーブルに存在するレコードの商品名bと組み合わせたときに同一の上位項目Wに関連づけられる商品名aのレコードが新たに入力されると、上述の第二データテーブル追加工程が必要となり得る。したがって、新たなレコードが入力されたときには、前記第二データテーブル追加工程が必要であるか否かの判断を行うにあたり、第三データテーブルBを検索することを要する。
【0069】
このように、本実施形態1においては、上述の第二データテーブル追加工程が必要であるか否かの判断を行うにあたり、検索する必要のないレコードを第三データテーブルAにまとめた結果、第三データテーブル全体ではなく、第三データテーブルの一部である第三データテーブルBだけを検索するだけで済む。したがって、第三データテーブル全体を検索する必要のある従来のデータベースよりも、検索対象となるレコード数が少なくなるので、検索時間が短くなり、データベースの更新処理に要する時間を短縮化できる。
【0070】
特に、本実施形態1の第三データテーブルBは、前記第二データテーブル追加工程が必要であると判断されると、対象のレコードが削除されて、レコード数が減少する。そのため、多くのレコードが入力されても、第三データテーブルBのレコード数が大きく増大することはなく、経時的にもデータベースの更新処理の時間短縮の効果は維持される。
【0071】
一方で、第三データテーブルBは、新たなレコードが入力されたときに前記第二データテーブル追加工程が必要であるか否かの判断を行うための検索が行われる必要のないレコードを含んでいてもよい。この場合、第三データテーブルBには、検索に不要なレコードが含まれる分だけ、検索対象のレコード数が増え、検索時間が長くなり、データベースの更新処理に要する時間の短縮化には不利となる。しかしながら、このような検索に不要なレコードは、何らかの理由で第三データテーブルBに含まれる場合があり得るうえ、このようなレコードが含まれていても、第三データテーブル全体を検索する必要のある従来のデータベースよりも、検索対象となるレコード数が少ないので、データベースの更新処理に要する時間の短縮化は実現される。
【0072】
図12は、本実施形態1におけるデータベースの更新処理(追加工程)の流れを示すフローチャートである。
データベースの製造装置(更新装置)として機能する情報検索装置100に対し、新規のデータ(顧客識別番号(検索対象項目)とこれに関係する商品名(関係項目)のレコード)が入力されると(S51)、演算部101aは、データベース更新用プログラムを実行して、追加手段として機能し、新規のレコードを記憶部101b内のデータベースに追加する追加工程を実施する。具体的には、まず、入力されたデータ(レコード)に係る商品名(関係項目)が、上位項目W,X,Y,Zのいずれかに関連づけられたものであるか否かを判断する(S52)。
【0073】
処理ステップS52の判断において、入力されたレコードの商品名が上位項目W,X,Y,Zのいずれにも関連づけられていない場合(S52のNo)、入力されたレコードを第三データテーブルAに追加する処理を行う(S53)。このようなレコードは、そのレコードの顧客識別番号と同じ顧客識別番号のレコードが後に入力された場合でも、当該顧客識別番号が関連づけられる商品名は同一の上位項目が関連づけられた商品名の全部に関係するものとはならないからである。
【0074】
また、処理ステップS52の判断において、入力されたレコードの商品名が上位項目W,X,Y,Zのいずれかに関連づけられたものである場合(S52のYes)、次に、第三データテーブルBの検索を行う(S54)。この検索では、入力されたレコードの顧客識別番号と同じ顧客識別番号のレコードを、第三データテーブルBの中から検索する。そして、検索により抽出されたレコードの商品名と入力されたレコードの商品名とが、同一の上位項目に関係づけられる商品名の全部を含むという第二データテーブル追加条件を満たすか否かを判断する(S55)。
【0075】
処理ステップS55の判断において、第二データテーブル追加条件を満たすと判断した場合(S55のYes)、検索により抽出されたレコードの商品名と入力されたレコードの商品名とによって全部の商品名が構成される上位項目と、入力されたレコードの顧客識別番号とを関連づけたレコードを、第二データテーブルへ追加する処理を行う(S56)。そして、第三データテーブルBから抽出したレコードを、第三データテーブルBから削除する処理を行う(S57)。一方、処理ステップS55の判断において、第二データテーブル追加条件を満たさないと判断した場合(S55のNo)、入力されたレコードを第三データテーブルBへ追加する処理を行う(S58)。
【0076】
以上のようなデータベースの更新処理(追加工程)を実行することにより、本実施形態においては、上述の第二データテーブル追加工程(S56,S57)が必要であるか否かの判断を行うにあたり(S54,S55)、第三データテーブルの一部である第三データテーブルBだけを検索するだけで済む。したがって、第三データテーブル全体を検索する必要のある従来のデータベースよりも、検索対象となるレコード数が少なくなるので、検索時間が短くなり、データベースの更新処理に要する時間を短縮化できる。
【0077】
特に、本実施形態の第三データテーブルBは、上述した第二データテーブル追加工程(S56,S57)が必要であると判断されると、対象のレコードが削除されて、レコード数が減少する。そのため、多くのレコードが入力されても、第三データテーブルBのレコード数が大きく増大することはなく、経時的にもデータベースの更新処理の時間短縮の効果は維持される。
【0078】
図13は、本実施形態1におけるデータベースの更新処理(更新工程)の流れを示すフローチャートである。
データベースの更新装置(製造装置)として機能する情報検索装置100に対し、新規のデータが入力されると(S31)、本実施形態では、演算部101aは、データベース更新用プログラムを実行して、上述したように、新規のデータを記憶部101b内のデータベースに追加する追加工程(S51~S58)と合わせて、以下の更新工程を実施する。
【0079】
更新工程では、まず、所定の2つ以上の商品名(関係項目)を上位項目にグループ化するための上位項目作成条件を満たすことになったか否かを判断する(S32)。この上位項目作成条件は、上述したように、適宜設定することができる。このとき、新規のデータ入力によって上位項目作成条件を満たすことにはならなかった場合には(S32のNo)、既存の上位項目に基づいて、上述した追加工程(S51~S58)を実施する。すなわち、演算部101aは、新規のデータ入力によって新たに既存の上位項目に関連付けられることになった顧客識別番号のレコードを新たに
図6に示す第二データテーブルに追加する更新処理(第二データテーブル追加工程)を行うとともに(S35)、第二データテーブルに追加した分を
図8(b)に示す第三データテーブルBから削除する更新処理(第二データテーブル追加工程)を行う(S36)。また、新規のデータ入力によって新たに既存の上位項目に関連付けられない顧客識別番号のレコードに対しては、いずれの上位項目にも含まれない商品名に関連する顧客識別番号のレコードについては、
図8(a)に示す第三データテーブルAに追加する更新処理(追加工程)を行い(S36)、いずれかの上位項目に含まれる商品名に関連する顧客識別番号のレコードについては、
図8(b)に示す第三データテーブルBに追加する更新処理(追加工程)を行う(S36)。
【0080】
一方、新規のデータ入力によって上位項目作成条件を満たすことになった場合(S32のYes)、当該上位項目作成条件に対応する新たな上位項目を作成する(S33)。例えば、上位項目作成条件が、2つ以上の商品名(関係項目)の全部に関係している顧客識別番号(検索対象項目)の数が所定数以上存在するという条件であった場合、新規のデータ入力によって当該顧客識別番号(検索対象項目)の数が所定数以上に達したら、新たな上位項目を作成して、当該2つ以上の商品名(関係項目)を当該新たな上位項目でグループ化する。そして、当該2つ以上の商品名(関係項目)に対し、当該新たな上位項目を関連づけたレコードを、
図4に示す第一データテーブルに追加する更新処理(更新工程)を実行する(S34)。
【0081】
続いて、新規のデータ入力によって新たに既存の上位項目又は前記新たな上位項目に関連付けられることになった顧客識別番号のレコードを新たに
図6に示す第二データテーブルに追加する更新処理(第二データテーブル追加工程)を行うとともに(S35)、第二データテーブルに追加した分を
図8(a)および(b)に示す第三データテーブルA及びBから削除する更新処理(第二データテーブル追加工程)を行う(S36)。また、新規のデータ入力によって新たに既存の上位項目又は前記新たな上位項目に関連付けられない顧客識別番号のレコードに対しては、いずれの上位項目にも含まれない商品名に関連する顧客識別番号のレコードについては、
図8(a)に示す第三データテーブルAに追加する更新処理(追加工程)を行い(S36)、いずれかの上位項目に含まれる商品名に関連する顧客識別番号のレコードについては、
図8(b)に示す第三データテーブルBに追加する更新処理(追加工程)を行う(S36)。
【0082】
以上のようなデータベースの更新処理(更新工程)を実行することにより、上位項目に適切にグループ化された最新のデータを上述したデータテーブル別で管理されたデータベースを用いて、検索処理を行うことができる。しかも、本実施形態1では、新規のデータ入力によって上位項目作成条件を満たすことになった場合には、新たな上位項目が作成され、当該新たな上位項目を含むデータベースに更新される。これにより、最新のデータを適切な上位項目でグループ化し、上述したデータテーブル別で管理されたデータベースを用いた検索処理が実現される。
【0083】
〔変形例1〕
次に、上述した実施形態1におけるデータベースのデータ構造の一変形例(以下、本変形例を「変形例1」という。)について説明する。
図14は、本変形例1における情報検索装置100が用いるデータベースの第四データとしての第四データテーブルのデータ構造を示す説明図である。
本変形例1では、2つ以上の上位項目W,X,Yを同一の第二上位項目αでグループ化し、これらの上位項目W,X,Yと第二上位項目αとを関連づけた第四データテーブルを作成して記憶部101bに記憶している。なお、第二上位項目αが上位項目W,X,Yを介して関連づけられる商品名はa,b,cであり、上述した実施形態1における上位項目Zと同じである。本変形例1では、上位項目Zは作成されていない。
【0084】
図15は、本変形例1における情報検索装置100が用いるデータベースの第五データとしての第五データテーブルのデータ構造を示す説明図である。
図15に示す第五データテーブルは、第二上位項目αが上位項目W,X,Yを介して関連づけられた商品名a,b,c(関係項目)に関係する顧客識別番号1,9に、当該第二上位項目αを関連づけたデータである。第五データテーブルは記憶部101bに記憶されており、演算部101aは、検索用プログラムを実行して第五データテーブルから検索を行うことができる。
【0085】
図16は、本変形例1における情報検索装置100が用いるデータベースの第一データテーブルのデータ構造を示す説明図である。
図16に示す第一データテーブルは、上位項目W,X,Yが関連づけられた商品名a,b,c(関係項目)に、当該上位項目W,X,Yを関連づけたデータである。本変形例1の第一データテーブルは、上述した実施形態1の
図4に示した第一データテーブルから上位項目Zに対応するレコードが除外されたものに相当する。
【0086】
図17は、本変形例1における情報検索装置100が用いるデータベースの第二データテーブルのデータ構造を示す説明図である。
図17に示す第二データテーブルは、上位項目W,X,Yが関連づけられた商品名a,b,c(関係項目)に関係する顧客識別番号2,4,6,7,・・・に、当該上位項目W,X,Yを関連づけたデータである。本変形例1の第二データテーブルは、上述した実施形態1の
図6に示した第二データテーブルから上位項目Zに対応するレコードが除外されたものに相当する。
【0087】
本変形例1における検索処理の基本的な流れは上述した実施形態1と同様である。つまり、検索する商品名が入力された場合、演算部101aは、検索用プログラムを実行し、まず、
図16に示す第一データテーブルを参照し、指定された商品名に対応する上位項目が存在するか否かを判断する。ただし、指定された商品名に対応する上位項目が存在する場合には、更に、
図14に示す第四データテーブルを参照し、指定された商品名に対応する上位項目についての第二上位項目が存在するか否かを判断することになる。そして、この判断で第二上位項目が存在するとされた場合には、演算部101aは、
図15に示す第五データテーブルの全体から、当該第二上位項目に関連づけられた顧客識別番号を検索することになる。
【0088】
本変形例1のデータベースでは、上述した実施形態1よりも更にデータテーブルを細分化(階層化)して管理することにより、個々のデータテーブルのレコード数を削減して、検索処理を高速化できる。また、本変形例1によれば、上述した実施形態1よりも検索時のOR条件の項目数を更に削減して、検索処理を高速化することが可能となる。更に、本変形例1によれば、AND条件での検索処理において、指定されたすべての商品名が第二上位項目に関連づけられている場合、
図15に示す第五データテーブルに対して、当該第二上位項目に関連づけられた顧客識別番号(検索対象項目)を単一条件で検索するだけで、検索処理を完了することができ、特に高速な検索処理が実現される。
【0089】
なお、本変形例1のようにグループ化の階層が複数段にわたる場合には、検索処理においては、
図18に示すようなデータテーブルを利用するようにしてもよい。
図18に示すデータテーブルは、検索されるデータテーブルと階層とを関連づけたものであり、階層の数字が大きいほど、より上の上位項目と検索対象項目とを関連づけたデータテーブルであることを示している。
【0090】
図18のようなデータテーブルを利用することは、特に新規データの追加によるデータベースの更新時に特にメリットがある。具体的には、新規データの追加により上位項目作成条件に応じて新たな上位項目あるいは新たな第二上位項目が増えていくと、上位項目と検索対象項目とを関連づけた第二データテーブルや、第二上位項目と検索対象項目とを関連づけた第五データテーブルのレコード数が増大してく。その結果、これらのデータテーブルに対する検索処理時のレコード数が増えて検索処理の時間がかかるようになってくる。このような場合には、2つ以上の第二上位項目を更に第三の上位項目でグループ化し、これらの第二上位項目と第三上位項目とを関連づけた新たなデータテーブル(第六データ)を作成するとともに、第三上位項目が第二上位項目を介して関連づけられた関係項目に関係する検索対象項目に、当該第三上位項目を関連づけた新たなデータテーブル(第六データ)を作成するのが有効である。
【0091】
このように新たなデータテーブルを増やす場合、通常は、これに対応して検索用プログラムの内容を変更することが必要になるが、
図18に示すようなデータテーブルを利用することで、検索用プログラムの内容変更を伴わずに、新たなデータテーブルを増やすことが可能となる。すなわち、検索用プログラムが
図18に示すようなデータテーブルを参照してデータベースのデータ構造を特定するプログラム内容とすることで、新たなデータテーブルが増えたときに
図18に示すデータテーブルを更新するようにすれば、検索用プログラムの内容を変えずに、新たに増えたデータテーブルも利用した検索処理が可能となる。
【0092】
〔効果確認試験1〕
次に、本実施形態1における効果確認試験(以下、本試験を「効果確認試験1」という。)について説明する。
本効果確認試験1は、商品名(関係項目)が商品名a、b、c、dの4つであり、顧客識別番号(検索対象項目)が1~1000の1000個であり、商品名aは顧客識別番号1~500の500個に関連づけられており、商品名bは顧客識別番号1~800の800個に関連づけられており、商品名cは顧客識別番号1~500、601~900の800個に関連づけられており、商品名dは顧客識別番号1~1000の1000個に関連づけられている例で行った。また、本効果確認試験1における上位項目は、3つの商品名a,b,c(関係項目)をグループ化した上位項目Zのみとした。
【0093】
図19は、本効果確認試験1における商品名a,b,c(関係項目)と上位項目Zとを関連づけた第八データテーブルであり、上述した実施形態1における
図4に示す第一データテーブルに相当する。
図20は、顧客識別番号1~1000(検索対象項目)のうち、上位項目Zが関連づけられた3つの商品名a,b,c(関係項目)の全部に関係する顧客識別番号1~500に、当該上位項目Zを関連づけたデータであり、上述した実施形態1における
図6に示す第二データテーブルに相当する。
図21は、顧客識別番号1~1000(検索対象項目)のうち、いずれの上位項目Zにも関連づけられていない商品名d(関係項目)に関係する顧客識別番号1~1000と当該商品名dとを関連づけたデータであり、上述した実施形態1における
図8(a)に示す第三データテーブルAに相当する。
図22は、顧客識別番号1~1000(検索対象項目)のうち、同一の上位項目Zに関連づけられている商品名a,b,c(関係項目)の一部のみに関係する顧客識別番号501~800,601~900に、それぞれに対応する商品名b,c(関係項目)を関連づけたデータであり、上述した実施形態1における
図8(b)に示す第三データテーブルBに相当する。
また、
図23は、比較のため、
図21に示す第三データテーブルAと
図22に示す第三データテーブルBとを統合して1つのデータテーブル(第三データテーブル)としたものである。
【0094】
本効果確認試験1では、第三データテーブルとして、
図21に示す第三データテーブルAと
図22に示す第三データテーブルBとに分割されたものを用いてデータベースの更新処理を行うケースA(実施形態1)と、
図23に示す単一(非分割)の第三データテーブルを用いてデータベースの更新処理を行うケースB(比較例)との比較実験を行った。本効果確認試験1の更新処理では、商品名aと顧客識別番号750~850とが関連づけられた101個の新規レコードを入力してデータベースを更新する。レコードの追加順序は、顧客識別番号の小さい順に行った。
【0095】
各々のデータ(レコード)は、個別のテキストファイル(CSVファイル)で用意し、データの追加工程はC言語で作成したプログラムを用いて行った。このプログラムの動作は、データ追加に伴う
図20に示す第二データテーブルおよび
図21に示す第三データテーブルAの更新処理については、単なるデータの追加処理である。一方、
図22に示す第三データテーブルBや
図23に示す第三データテーブルの更新処理については、データの削除を伴う場合がある。そのため、そのような場合には、必要なデータの削除を実行した後、該当するテキストファイルの全データを一旦削除し、その後に更新後のデータをすべて新たに書き込む処理を行った。
【0096】
なお、本効果確認試験1のその他の主な条件は以下のとおりである。
・情報検索装置:富士通SELSIUS W510
・オペレーティングシステム:Windows10
・C言語コンパイラ:Borland C
【0097】
本効果確認試験後の第二データテーブルは、実施形態1に係るケースAも、比較例に係るケースBも、
図20に示す試験前の状態から、
図24に示す状態へ更新された。すなわち、商品名aに関連づけられた顧客識別番号750~800のレコードが新規に入力されたことで、
図22に示す第三データテーブルB(実施形態1)や
図23に示す第三データテーブル(比較例)に含まれるレコードのうち、商品名bに関連づけられた顧客識別番号750~800のレコード及び商品名cに関連づけられた顧客識別番号750~800のレコードは、同じ顧客識別番号の商品名aに係る新規レコードと組み合わされることで、商品名a,b,cの上位項目Zにまとめることができる。その結果、
図20に示す試験前の第二データテーブルに対し、上位項目Zに関連づけられた顧客識別番号750~800のレコードが追加され、
図24に示す試験後の第二データテーブルが得られた。
【0098】
また、本効果確認試験後の第三データテーブルA(実施形態1)は、更新されることはなかったが、本効果確認試験後の第三データテーブルB(実施形態1)は、
図22に示す試験前の状態から、
図25に示す状態へ更新された。すなわち、商品名aに関連づけられた顧客識別番号750~800のレコードが新規に入力されたことで、上述したとおり、上位項目Zにまとめれて第二データテーブルに追加されたことに伴い、商品名bに関連づけられた顧客識別番号750~800のレコード及び商品名cに関連づけられた顧客識別番号750~800のレコードが、第三データテーブルBから削除され、
図25に示す状態の第三データテーブルBが得られた。
【0099】
一方、本効果確認試験後の第三データテーブル(比較例)は、
図23に示す試験前の状態から、
図26に示す状態へ更新された。すなわち、商品名aに関連づけられた顧客識別番号750~800のレコードが新規に入力されたことで、上述したとおり、上位項目Zにまとめれて第二データテーブルに追加されたことに伴い、商品名bに関連づけられた顧客識別番号750~800のレコード及び商品名cに関連づけられた顧客識別番号750~800のレコードが、第三データテーブルから削除され、
図26に示す状態の第三データテーブルが得られた。
【0100】
本効果確認試験1において、101個の新規データの追加工程によるデータベースの更新処理時間は、第三データテーブルを分割した実施形態1に係るケースAでは、約62ミリ秒、非分割の第三データテーブルを用いた比較例に係るケースBでは、約109ミリ秒であった。この結果は、実施形態1にかかるケースAでは、第三データテーブルを分割して、101個の新規データの追加工程時に検索される第三データベースBのレコード数が、比較例の第三データベース全体のレコード数よりも少ないことで、当該追加工程の検索時間が短くなり、処理時間の短縮が実現されたものといえる。
【0101】
〔実施形態2〕
次に、本発明の他の実施形態(以下、本実施形態を「実施形態2」という。)について、説明する。
本実施形態2も、前記実施形態1と同様、スーパーや百貨店などの店舗において顧客の商品購入履歴を管理するためのデータベースを用いるが、複数の顧客識別番号(関係項目)の中から指定された顧客識別番号に関連付けられた商品名(当該顧客が購入した商品)(検索対象項目)を、複数の商品名の中からコンピュータによって検索する検索処理を行う例である。したがって、前記実施形態1の例とは、関係項目と検索対象項目との関係が逆の関係になっている。以下、本実施形態2の説明は、前記実施形態1と異なる点を中心に説明する。
【0102】
本実施形態2の説明は、
図27~
図31を参照して行う。
すなわち、本実施形態2は、商品名(検索対象項目)が商品名aと商品名bと商品名cの3つであり、顧客識別番号(関係項目)が1~70000の7万個であり、商品名aは顧客識別番号1~40000の4万個に関連づけられており、商品名bは顧客識別番号20001~60000の4万個に関連づけられており、商品名cは顧客識別番号60001~70000の1万個に関連づけられている例である。また、本実施形態2では、2つの商品名a,b(検索対象項目)が上位項目Wにグループ化されている。本実施形態2で用いるデータテーブルは、
図30に示すデータテーブル(以下「第六データテーブル」という。)と、
図31(a)に示すデータテーブル(以下「第七データテーブルA」という。)及び
図31(b)に示すデータテーブル(以下「第七データテーブルB」という。)と、
図28に示すデータテーブル(以下「第八データテーブル」という。)とである。なお、以下の説明において、第七データテーブルA及び第七データテーブルBをまとめて「第七データテーブル」ともいう。
【0103】
図30に示す第六データテーブルは、上述したとおり、顧客識別番号1~70000(関係項目)のうち、上位項目Wが関連づけられた2つの商品名a,b(検索対象項目)の全部に関係する顧客識別番号20001~40000に、当該上位項目Wを関連づけたデータである。第六データテーブルは記憶部101bに記憶され、演算部101aは、検索用プログラムを実行して第六データテーブルから検索を行うことができる。
【0104】
第七データテーブルは、顧客識別番号1~70000(関係項目)のうち、第六データテーブルに含まれない顧客識別番号1~20000,40001~70000に、商品名a,b,c(検索対象項目)を関連づけたデータである。本実施形態2の第七データテーブルは、
図31(a)及び(b)に示すように、第七データテーブルA及び第七データテーブルBに分割された状態で、記憶部101bに記憶され、演算部101aは、検索用プログラムを実行して、第七データテーブルA及び第七データテーブルB(すなわち第七データテーブル)から検索を行うことができる。
【0105】
図32は、本実施形態2における単一条件での検索処理の流れを示すフローチャートである。
例えば、顧客識別番号999の単一条件で、その顧客識別番号999に対応する顧客が購入したことのある商品名を検索する場合を考える。入力装置103,104をユーザーが操作するなどして顧客識別番号999が入力された場合(S41)、演算部101aは、検索用プログラムを実行し、まず、
図30に示す第六データテーブルの全体から、顧客識別番号999に関連づけられた上位項目Wを単一条件で検索する(S42)。
【0106】
ここでは、顧客識別番号999が上位項目Wに関連づけられていないので、第六データテーブルに対する検索処理では顧客識別番号999に関連づけられた上位項目Wがヒットしない(S43のNo)。そのため、演算部101aは、
図31(a)及び(b)に示す第七データテーブルの全体から、顧客識別番号999に関連づけられた商品名を単一条件で検索する(S44)。これにより、顧客識別番号999に関連づけられた商品名aがヒットするので、その検索結果に係る商品名aを出力する(S46)。
【0107】
一方で、もし顧客識別番号999が上位項目Wに関連づけられていた場合、第六データテーブルに対する検索処理において、顧客識別番号999に関連づけられた上位項目Wがヒットする(S43のYes)。この場合、演算部101aは、
図28に示す第八データテーブルを参照し(S45)、上位項目Wに関連づけられている商品名a,bを抽出して、これを検索結果として出力する(S46)。
【0108】
本実施形態2によれば、第六データテーブルに含まれる顧客識別番号(関係項目)と第七データテーブルに含まれる顧客識別番号(関係項目)とが排他的な関係になっている。これにより、指定された1つの顧客識別番号999(関係項目)に関連づけられた上位項目が存在する場合には、
図30に示す第六データテーブルに対し、その1つの顧客識別番号999に関連づけられた上位項目を単一条件で検索するだけで(第七データテーブルに対する検索処理を行わずに)、検索処理を完了する。第六データテーブルは、第七データテーブルに含まれる顧客識別番号(関係項目)と商品名(検索対象項目)とが関連づけられたレコードを含まないので、検索するレコード数が少なく、検索処理速度を大幅に高速化できる。
【0109】
また、指定された1つの顧客識別番号999(関係項目)に関連づけられた上位項目が存在しない場合には、
図30に示す第六データテーブルと
図31(a)及び(b)に示す第七データテーブルの両方に対して検索処理を行うことになる。このときのレコード数の合計は、
図27に示す表のようなデータテーブルに対して検索処理を行う従来の場合と比較すると少ないので検索処理速度を高速化できる。
【0110】
なお、本実施形態2では、レコード数が相対的に少ない第六データテーブルから先に検索処理を行う例となっているが、第七データテーブルから先に検索処理を行うようにしてもよい。この場合には、指定された1つの顧客識別番号999(関係項目)に関連づけられた上位項目が存在しないとき、
図31(a)及び(b)に示す第七データテーブルに対し、その1つの顧客識別番号999に関連づけられた商品名を単一条件で検索するだけで(第六データテーブルに対する検索処理を行わずに)、検索処理を完了するので、検索処理速度を大幅に高速化できるようになる。
【0111】
次に、本実施形態2におけるデータ構造をもったデータベースの更新方法(製造方法)について説明する。
本実施形態2においても、ユーザーが入力装置103,104を用いた手入力により顧客識別番号とその顧客が購入した商品名とを入力することで、
図30に示す第六データテーブルや
図31(a)及び(b)に示す第七データテーブル(すなわち、
図31(a)及び(b)に示す第七データテーブルA及び第七データテーブルB)が更新される。新たなデータの入力方法は、上述した実施形態1と同様に、このような手入力に限らない。
【0112】
本実施形態2においても、新規のデータ(レコード)が入力されたとき、第七データテーブルに含まれていたレコードを削除するとともに、第六データテーブルにレコードを追加するという第六データテーブル追加工程を実施する必要がある場合がある。例えば、第七データテーブルには、顧客識別番号1及び商品名aのレコードが含まれているところ、新規に、顧客識別番号1及び商品名bのレコードが入力された場合である。この場合、
図28に示す第八データテーブルに示すように商品名aと商品名bは上位項目Wでグループ化されているため、新規のレコードが追加されることにより、顧客識別番号1は、同一の上位項目Wが関連づけられた商品名a,bの全部に関係することになる。その結果、顧客識別番号1に上位項目Wを関連づけたレコードを、新たに、第六データテーブルに追加する必要がある。そして、これに伴い、第七データテーブルに含まれた顧客識別番号1及び商品名aのレコードは、第七データテーブルから削除する必要がある。
【0113】
このような第六データテーブル追加工程を実施するにあたっては、入力される新たなレコードごとに、この第六データテーブル追加工程(第六データテーブルにレコードを追加するとともに、第七データテーブルに含まれていたレコードを削除する工程)が必要であるか否かを判断する必要がある。この判断においては、新たなレコードに基づき、第七データテーブルに含まれるレコードを検索して前記第六データテーブル追加工程が必要か否かを判断する必要があり、第七データテーブルに含まれるレコード数が多くなると、第七データテーブルに対する検索に時間を要し、データベースの更新処理に時間がかかってしまう。
【0114】
そこで、本実施形態2においては、第七データテーブルを、
図31(a)及び(b)に示すように、第七データテーブルAと第七データテーブルBとに分割したデータ構造としている。
【0115】
第七データテーブルAは、第七データテーブル全体に含まれるレコードのうち、いずれの上位項目Wにも関連づけられていない検索対象項目である商品名cと関係項目である顧客識別番号60001~70000とが関連づけられたレコードを含む。このようなレコードは、例えば、そのレコードの顧客識別番号70000と同じ顧客識別番号70000についてのレコードが新たに入力されても、これらのレコードの商品名cが同一の上位項目Wに関連づけられることがない。したがって、新たなレコードが入力されたとき、第七データテーブルAを検索する必要はないので、上述の第六データテーブル追加工程が必要であるか否かの判断を行うにあたって、第七データテーブルAを検索する必要がない。
【0116】
一方、第七データテーブルBは、第七データテーブル全体に含まれるレコードのうち、上位項目Wに関連づけられた検索対象項目である商品名a,bと関係項目である顧客識別番号1~20000、40001~60000とを関連づけられたレコードを含む。このようなレコードは、例えば、そのレコードの顧客識別番号20000と同じ顧客識別番号20000について、第七データテーブルBに存在するレコードの商品名aと組み合わせたときに同一の上位項目Wに関連づけられる商品名bのレコードが新たに入力されると、上述の第六データテーブル追加工程が必要となり得る。したがって、新たなレコードが入力されたときには、前記第六データテーブル追加工程が必要であるか否かの判断を行うにあたり、第七データテーブルBを検索することを要する。
【0117】
このように、本実施形態2においては、上述の第六データテーブル追加工程が必要であるか否かの判断を行うにあたり、検索する必要のないレコードを第七データテーブルAにまとめた結果、第七データテーブル全体ではなく、第七データテーブルの一部である第七データテーブルBだけを検索するだけで済む。したがって、第七データテーブル全体を検索する必要のある従来のデータベースよりも、検索対象となるレコード数が少なくなるので、検索時間が短くなり、データベースの更新処理に要する時間を短縮化できる。
【0118】
特に、本実施形態2の第七データテーブルBは、前記第六データテーブル追加工程が必要であると判断されると、対象のレコードが削除されて、レコード数が減少する。そのため、多くのレコードが入力されても、第七データテーブルBのレコード数が大きく増大することはなく、経時的にもデータベースの更新処理の時間短縮の効果は維持される。
【0119】
一方で、第七データテーブルBは、新たなレコードが入力されたときに前記第六データテーブル追加工程が必要であるか否かの判断を行うための検索が行われる必要のないレコードを含んでいてもよい。この場合、第七データテーブルBには、検索に不要なレコードが含まれる分だけ、検索対象のレコード数が増え、検索時間が長くなり、データベースの更新処理に要する時間の短縮化には不利となる。しかしながら、このような検索に不要なレコードは、何らかの理由で第七データテーブルBに含まれる場合があり得るうえ、このようなレコードが含まれていても、第七データテーブル全体を検索する必要のある従来のデータベースよりも、検索対象となるレコード数が少ないので、データベースの更新処理に要する時間の短縮化は実現される。
【0120】
〔実施形態3〕
次に、本発明の更に他の実施形態(以下、本実施形態を「実施形態3」という。)について、説明する。
本実施形態3は、前記実施形態1と同様、スーパーや百貨店などの店舗において顧客の商品購入履歴を管理するためのデータベースを用いるが、第三データテーブルBの構造が異なっている例である。以下、本実施形態3の説明は、前記実施形態1と異なる点を中心に説明する。
【0121】
図33は、本実施形態3における第一データとしての第一データテーブルを示す一例である。
図34は、本実施形態3における第二データとしての第二データテーブルを示す一例である。
図35は、本実施形態3における第三データAとしての第三データテーブルAを示す一例である。
図36(a)~(c)は、本実施形態3における第三データBとしての第三データテーブルBを示す一例である。
【0122】
本実施形態3におけるデータの例は、本実施形態3の説明のため、上述した実施形態1のものとは異なっている。
具体的には、
図33に示す第一データテーブルの例は、
図4に示した例とは異なり、商品名a,b,c,d,eという5つの商品名(関係項目)を上位項目Pに、商品名f,g,hという3つの商品を上位項目Qにグループ化している。また、
図34に示す第二データテーブルの例は、
図6に示した例とは異なり、複数の顧客識別番号1,2,3,4,5,・・・(検索対象項目)のうち、同一の上位項目Pが関連づけられた商品名a,b,c,d,e(関係項目)の全部に関係する顧客識別番号1,2,5,・・・に、当該上位項目Pが関連づけられ、同一の上位項目Qが関連づけられた商品名f,g,hの全部に関係する顧客識別番号1に当該上位項目Qが関連づけられている例である。また、
図35に示す第三データテーブルAの例は、
図8(a)に示した例とは異なり、複数の顧客識別番号1,2,3,4,5,・・・(検索対象項目)のうち、いずれの上位項目にも含まれない商品名i,j,・・・と顧客識別番号8,10,・・・とが関連づけられている例である。また、
図36(a)~(b)に示す第三データテーブルBの例は、
図8(b)に示した例とは異なり、複数の顧客識別番号1,2,3,4,5,・・・(検索対象項目)のうち、同一の上位項目PもしくはQに含まれる一部の商品名と関連づけられている顧客識別番号2、3,4,5、6,・・・の例である。
【0123】
本実施形態3においては、第三データテーブルBに含まれる顧客識別番号2、3,4,5,6,・・・と商品名a,b,c,d,e,f,g,hとが関連付けられた各レコードを、
図36(a)~(b)に示すように、同一の上位項目P,Qがそれぞれ関連づけられている商品名を上位項目P,Qごとに個別のデータテーブル(データファイル)でまとめた構造としている。すなわち、本実施形態3の第三データテーブルは、
図35及び
図36(a)~(b)に示すように、第三データテーブルAと、第三データテーブルBを構成する上位項目別テーブルBP,BQとに分割された状態で、記憶部101bに記憶されている。
【0124】
あるいは、さらに、
図36(a)~(b)を顧客識別番号ごとに分割しても良い。この場合、
図36(a)に示す上位項目別テーブルBPについては、顧客識別番号3,4,6のそれぞれについての3つのテーブルBP3,BP4,BP6に分割され、
図36(b)に示す上位項目別テーブルBQについては、顧客識別番号2,3,4,5,6のそれぞれについての5つのテーブルBQ2,BQ3,BQ4,BQ5,BQ6に分割される。このとき、各テーブル(ファイル)の名称(ファイル名)を、顧客識別番号ごとに異なる名称(例えば、顧客識別番号を含む名称)とすれば、顧客識別番号のカラムは不要になる。例えば、後述する
図37(a)~(b)に示すテーブルの例である。すなわち、
図37(a)は、上位項目Pと関連する商品名を、関連する顧客識別番号201~300ごとにまとめたテーブル(100個のテーブルの内容)を示し、
図37(b)は、上位項目Pと関連する商品名を、関係する顧客識別番号301~400ごとにまとめたテーブル(100個のテーブルの内容)を示している。
【0125】
以下、本実施形態3におけるデータ構造をもったデータベースの更新方法(製造方法)について説明する。
新規のデータ(レコード)が入力されたとき、
図36(a)~(b)に示す第三データテーブルBに含まれていたレコードを削除するとともに、
図34に示す第二データテーブルにレコードを追加するという第二データテーブル追加工程を実施する必要がある場合がある。例えば、新規に、顧客識別番号3及び商品名eのレコードが入力された場合、
図36(a)に示す上位項目別テーブルBPのとおり、顧客識別番号3は、新規のレコードが追加されることにより、同一の上位項目Pが関連づけられた商品名a,b,c,d,eの全部に関係することになる。その結果、顧客識別番号3に上位項目Pを関連づけたレコードを、新たに、
図34に示す第二データテーブルに追加する必要がある。そして、これに伴い、第三データテーブルBから、顧客識別番号3と商品名a,b,c,dとのレコードを削除する必要がある。
【0126】
ここで、新規のレコードが入力されたときに第二データテーブル追加工程が必要であるか否かを判断するためには、第三データテーブルBの中から、新規のレコードと同じ顧客識別番号3と、同一の上位項目Pに関連づけられている商品名a,b,c,dとを関連づけているレコードを検索することが必要である。このとき、上述した実施形態1の第三データテーブルBのように、顧客識別番号3と関連づけられた各商品名a,b,c,d,f,gを個別のレコードで管理していると、その検索処理に時間がかかってしまう。なぜなら、この場合、第三データテーブルBの全体を対象に上述した検索を行わなければならないからである。
【0127】
また、第二データテーブル追加工程が必要であると判断されることで、第三データテーブルBの中から、該当する4つのレコード(顧客識別番号3と各商品名a,b,c,dとを関係づける個別のレコード)を削除する必要も生じる。上述した実施形態1の第三データテーブルBの場合、この削除処理においても、第三データテーブルBの全体に対して、これらの4つのレコードを削除する処理を行う必要がある。
【0128】
そこで、本実施形態3においては、第二データテーブル追加工程の処理時間を短縮化するために、
図36(a)~(b)に示すように、第三データテーブルBを、上位項目ごとに分割してまとめた構造とした。このような構造であれば、新規データ(顧客識別番号3と商品名eとのレコード)が入力されたとき、第二データテーブル追加工程が必要であるか否かを判断する際の検索処理において、第三データテーブルBを構成する上位項目別テーブルBP,BQのうち、入力された新規データの商品名eと同じ商品名eが属する上位項目Pを特定し(この特定はは第一データテーブルを検索すればよい。)、特定した上位項目Pに対応する上位項目別テーブルBPのみを対象に検索すればよい。したがって、上位項目別テーブルBQも含んだ第三データテーブルBの全体を対象に検索する場合と比べて、検索対象数が少なく、より短時間で処理を実行できる。
【0129】
しかも、その検索にあたっては、顧客識別番号3のレコードを特定するような検索は必要でなく、第三データテーブルBの一部である上位項目別テーブルBPに対し、顧客識別番号3に対応するレコードの個数を検索するだけで良い(レコード個数の計測、SQL言語でいえば「select count(*)」)。すなわち、入力された新規データの商品名eが属する上位項目Pに関連づけられている商品名a,b,c,d,eの数が5つであることから、検索して得られた個数が3つ以下であれば、入力された新規データの分を足しても、合計4つであり、上位項目Pに関連づけられた商品名の全部が揃うことはない。したがって、この時点で、第二データテーブル追加工程が不要であると判断することができる。なお、一般に、検索対象範囲からデータ個数を検索する処理は、データを特定(抽出)する処理よりも短時間で実行できるので、データ個数の検索で済む処理であれば、高速な処理を実現できる。
ができる
【0130】
一方で、検索して得られた個数が4つであった場合、入力された新規データの分を足すと合計5つとなり、これで上位項目Pに関連づけられた商品名の全部が揃う可能性がある。ただし、第二データテーブル追加工程が必要であると判断するには、入力された新規データの商品名eが、すでに上位項目別テーブルBPに含まれている当該顧客識別番号3のレコードに重複していないことを確認する必要がある。もし、入力された新規データの商品名eが、すでに上位項目別テーブルBPに含まれている当該顧客識別番号3のレコードと重複することが無い状況下であれば、検索して得られた個数が4つであった時点で、第二データテーブル追加工程が必要であると判断することができる。
【0131】
以上より、本実施形態3によれば、第二データテーブル追加工程が必要であるか否かを判断する際の第三データテーブルBに対する検索処理では、前記実施形態1の第三データテーブルBよりも少ない検索対象数に対して検索処理を行うだけで済み、より短時間で第二データテーブル追加工程を処理することができる。
【0132】
なお、本実施形態3において、第二データテーブル追加工程が必要でないと判断された場合には、入力された新規データ(例えば、顧客識別番号4と商品名aとのレコード)を、上位項目別テーブルBPに追加する処理を行う。
【0133】
一方、第二データテーブル追加工程が必要であると判断された場合、第二データテーブル追加工程を実行する。このとき、本実施形態3によれば、第二データテーブル追加工程で第三データテーブルBに対する削除処理を行う際、入力された新規のデータと同じ顧客識別番号3についてのデータを、第三データテーブルBの中の上位項目別テーブルBPのみから特定してこれを削除するだけで済む。すなわち、削除対象を特定するための検索処理でも、第二データテーブル追加工程が必要か否かの判断時における検索処理と同様、前記実施形態1の第三データテーブルBよりも少ない検索対象数に対して削除処理を行うだけで済み、より短時間で第二データテーブル追加工程を処理することができる。
【0134】
特に、上位項目別テーブルBP,BQを、
図37(a)~(b)に示すテーブルの例のように、顧客識別番号(検索対象項目)ごとのテーブルに更に分割してある場合には、入力された新規のデータと同じ顧客識別番号3についてのテーブルを削除するだけの処理で済む(SQL言語でいえば「Drop Table」)。
【0135】
なお、本実施形態3の中で、第三データテーブルBを、同一の上位項目P,Qが関連づけられた複数の商品名(関係項目)をまとめた上位項目別テーブルBP,BQに分割した構造において、更に、各上位項目別テーブルBP,BQにまとめた同一の上位項目P,Qが関連づけられた複数の商品名(関係項目)を、顧客識別番号(検索対象項目)ごとに一検索単位でまとめた構造について説明したが、これに限られない。例えば、同一の上位項目P,Qが関連づけられた複数の商品名(関係項目)をまとめず、同一の上位項目P,Qが関連づけられた複数の商品名(関係項目)を、顧客識別番号(検索対象項目)ごとに一検索単位でまとめただけの構造であっても、処理の高速化は実現可能である。
【0136】
〔効果確認試験2〕
次に、本実施形態3における効果確認試験(以下、本試験を「効果確認試験2」という。)について説明する。
本効果確認試験2は、商品名(関係項目)が 商品名a、b、c、d、eの5つであり、第三データテーブルBに登録されている顧客識別番号(検索対象項目)が201~400の200個であり、商品名a~cは顧客識別番号201~400の200個に関連づけられており、商品名dは顧客識別番号201~300の100個に関連づけられている例で行った。なお、本効果確認試験2における上位項目は、5つの商品名a,b,c,d,e(関係項目)をグループ化した上位項目Pのみである。
【0137】
図37(a)及び(b)は、第三データテーブルBを構成する上位項目Pについての上位項目別テーブルBPを、さらに顧客識別番号201~400ごとに分割した上位項目・顧客識別番号別テーブルBP201~BP400の内容を示す表である。ただし、
図37(a)は、顧客識別番号201~300についての上位項目・顧客識別番号別テーブルBP201~BP300を示し、
図37(b)は、顧客識別番号301~400についての上位項目・顧客識別番号別テーブルBP301~BP400を示す。
【0138】
本効果確認試験2では、第三データテーブルBとして、上述した実施形態1のデータ構造を用いてデータベースの更新処理を行うケースC(実施形態1)と、上述した実施形態3のデータ構造を用いてデータベースの更新処理を行うケースD(実施形態3)との比較実験を行った。本効果確認試験2では、以下の4つの入力パターン1~4をすべて用いて更新処理を3回ずつ行ったときの平均処理時間を比較する。
【0139】
なお、本効果確認試験2では、各種データテーブルをMySQLに格納し、その操作はJava(登録商標)のプログラムからJDBCコネクタを介してMySQLにアクセスする方法を用いた。
本効果確認試験1のその他の主な条件は以下のとおりである。
・情報検索装置:富士通SELSIUS W510
・オペレーティングシステム:Windows10
・DBMS:MySQL Server 5.1.40-community
・Java言語 jdk1.8.0_31
【0140】
(入力パターン1)
入力パターン1では、商品名eに対して顧客識別番号251~300が関連づけられた50個の新規入力データを入力する。新規入力データが入力されるたびに、第三データテーブルBを検索して第二データテーブル追加工程が必要であるか否か(第二データテーブル追加条件)を判断する。入力パターン1の場合、いずれの新規入力データについても、第二データテーブル追加条件を満たすことになるため、各新規入力データについて、第二データテーブル追加工程(第三データテーブルBからのデータ削除と第二データテーブルへのデータ追加)が実施される。
【0141】
(入力パターン2)
入力パターン2では、商品名eに対して顧客識別番号301~350が関連づけられた50個の新規入力データを入力する。この場合も、新規入力データが入力されるたびに、第三データテーブルBを検索して第二データテーブル追加工程が必要であるか否か(第二データテーブル追加条件)を判断する。入力パターン2の場合、いずれの新規入力データについても、第二データテーブル追加条件を満たさないため、各新規入力データを第三データテーブルBに追加する処理だけが実施される。ただし、ケースD(実施形態3)の場合において、対応する顧客識別番号301~350についての上位項目・顧客識別番号別テーブルBP301~BP350がすでに存在するので、各新規入力データをこれらの上位項目・顧客識別番号別テーブルBP301~BP350に追加する。
【0142】
(入力パターン3)
入力パターン3では、商品名eに対して顧客識別番号401~410が関連づけられた10個の新規入力データを入力する。この場合も、新規入力データが入力されるたびに、第三データテーブルBを検索して第二データテーブル追加工程が必要であるか否か(第二データテーブル追加条件)を判断する。入力パターン3の場合、いずれの新規入力データについても、第二データテーブル追加条件を満たさないため、各新規入力データを第三データテーブルBに追加する処理だけが実施される。ただし、ケースD(実施形態3)の場合においては、対応する顧客識別番号401~410についての上位項目・顧客識別番号別テーブルが存在していないので、新たに顧客識別番号401~410についての上位項目・顧客識別番号別テーブルBP401~BP410を作成する。なお、実際には、このように新たに上位項目・顧客識別番号別テーブルを作成する必要があるケースは少ないと考えられるので、新規入力データの数を少なくして試験を行った。
【0143】
(入力パターン4)
入力パターン4では、商品名fに対して顧客識別番号1~50が関連づけられた50個の新規入力データを入力する。この場合、商品名fは上位項目Pに含まれていないので、各新規入力データを第三データテーブルAに追加する処理だけが実施される。
【0144】
本効果確認試験2において、各入力パターン1~4についてそれぞれ3回ずつ試験を行ったときの平均処理時間は、ケースC(実施形態1)が8.1秒であり、ケースD(実施形態3)が4.3秒であった。その結果、前記実施形態1の第三データテーブルBのデータ構造よりも、前記実施形態3の第三データテーブルBのデータ構造の方が、更新処理に要する処理時間の短縮が実現されたことが確認された。
【0145】
なお、上述した実施形態1~3においては、新規データ(レコード)が1個入力されるたびに上述した追加工程を実施する例であったが、新規データ(レコード)が複数個入力された後に上述した追加工程を実施するようにしてもよい。この場合、例えば、入力される新規データを一時的に記憶しておく一時記憶用データテーブルを設け、所定の更新タイミング(例えば1日1回の所定タイミング、一時記憶用データテーブルに記憶されたレコード数が規定数に到達したタイミングなど)になったら、一時記憶用データテーブルに記憶されたレコードについて上述した追加工程を実施し、データベースの更新処理を行う。
【0146】
ただし、この場合、上述したいずれの検索処理についても、一時記憶用データテーブルに対する検索を行う必要が出てくるが、一時記憶用データテーブルのレコード数は限定的であるため、検索処理時間が大きく増大するような事態にはならない。
【0147】
また、上述した実施形態1~3において、新規データ(レコード)が1個入力されるたびに上述した追加工程の一部だけを実施し、残りの追加工程を新規データ(レコード)が複数個入力された後に実施するようにしてもよい。
【0148】
図12に示す追加工程を例に挙げて説明すると、新規データが入力されたら(S51)、入力されたデータ(レコード)に係る商品名(関係項目)が、上位項目W,X,Y,Zのいずれかに関連づけられたものであるか否かを判断する処理ステップS52を実施する。そして、入力されたレコードの商品名が上位項目W,X,Y,Zのいずれにも関連づけられていない場合には(S52のNo)、入力されたレコードを第三データテーブルAに追加する処理を行う(S53)。一方、処理ステップS52の判断において、入力されたレコードの商品名が上位項目W,X,Y,Zのいずれかに関連づけられたものである場合には(S52のYes)、第三データテーブルBの検索(S54)を行わずに、入力されたレコードを一時記憶用データテーブルあるいは第三データテーブルBに追加する。新規データが入力されたときに行う追加工程はこれで終了とする。
【0149】
その後、所定の更新タイミングになったら、一時記憶用データテーブルや第三データテーブルBに追加した各レコードについて、その顧客識別番号と同じ顧客識別番号のレコードを、第三データテーブルBの中から検索する(S54)。そして、検索の結果、第二データテーブル追加条件を満たしたレコードについては(S55のYes)、第二データテーブルへ追加する処理を行うとともに(S56)、第三データテーブルBから削除する処理を行う(S57)。一方、第二データテーブル追加条件を満たさないレコードについては(S55のNo)、第三データテーブルBへ保存する処理を行う(S58)。
【符号の説明】
【0150】
100 情報検索装置
101a 演算部
101b 記憶部
101 装置本体
103,104 入力装置