(57)【要約】【課題】外部からの不正アクセスと、内部からの不正解読との双方から適切にデータベースの機密情報を守るとともに、その機密情報へのアクセス性能を確保すること。【解決手段】部分表制御部２１が、レコード分割部２２が分割した複数の部分レコードについて、表対応定義３３を参照して対応する２つの部分表についての部分レコードを選択し、選択した第１部分レコードのデータ値と、データ登録要求に伴って入力される位置特定キーと、を入力パラメータとするハッシュ関数を計算し、その計算結果であるハッシュ値をもとに、選択した第２部分レコードの部分表における格納位置を計算し、レコードアクセス部２４が、記憶部内の部分表内における、部分表制御部２１が計算した格納位置に、レコード分割部２２が分割した第２部分レコードを格納することを特徴とする。【選択図】図１
2010128670.tif 000002
【特許請求の範囲】
【請求項１】
複数の要素によって構成される複数のデータレコードを格納したデータベースを、特定の前記要素について分割した複数の部分データベースとして管理するデータベース管理装置によるデータベース管理方法であって、
前記データベース管理装置は、部分データベース制御部と、レコード分割部と、レコードアクセス部とを備えるとともに、データベース定義情報と、前記複数の部分データベースとを記憶部に記憶し、
前記データベース定義情報は、前記データベースに格納された前記複数のレコードにおける要素名と前記分割された部分データベースに格納された部分レコードにおける要素名との対応関係を示すデータベース分割定義と、２つの部分データベース間の対応関係を示すデータベース対応定義とを含み、
前記レコード分割部は、登録対象の前記複数のレコードを指定するデータ登録要求を受け付けると、前記データベース分割定義を参照して前記部分レコードの要素を取得し、登録対象における前記複数のレコードの要素から各部分レコードの要素を取り出す射影演算により、前記複数のレコードを複数の前記部分レコードへと分割し、
前記部分データベース制御部は、前記レコード分割部が分割した複数の部分レコードについて、前記データベース対応定義を参照して対応する２つの部分データベースについての部分レコードを選択し、
選択した一方の部分レコードである第１の部分レコードのデータ値と、前記データ登録要求に伴って入力される位置特定キーと、を入力パラメータとするハッシュ関数を計算し、その計算結果であるハッシュ値をもとに、選択したもう一方の部分レコードである第２の部分レコードの当該部分データベースにおける格納位置を計算し、
前記レコードアクセス部は、
前記記憶部内の部分データベースにおける、前記部分データベース制御部が計算した格納位置に、前記レコード分割部が分割した前記第２の部分レコードを格納することを特徴とする
データベース管理方法。
【請求項２】
前記データベース管理装置は、さらに、レコード結合部を有し、
前記レコード結合部は、
検索条件を指定するデータ検索要求を受け付けると、前記データベース分割定義を参照して検索条件の要素が属する部分データベースを特定し、特定した部分データベースに格納されている部分レコードから、検索条件に該当する前記第１の部分レコードを検索し、
前記部分データベース制御部は、
前記レコード結合部が検索した前記第１の部分レコードから、前記データベース対応定義を参照して対応する前記第２の部分レコードを選択し、
検索した前記第１の部分レコードのデータ値と、前記データ検索要求に伴って入力される前記位置特定キーと、を入力パラメータとする前記ハッシュ関数を計算し、その計算結果である前記ハッシュ値をもとに、選択した前記第２の部分レコードの部分データベースにおける読込位置を計算し、
前記レコードアクセス部は、
前記記憶部内の部分データベース内における、前記部分データベース制御部が計算した読込位置から、前記第２の部分レコードを読み込み、
前記レコード結合部は、
検索した前記第１の部分レコードのデータ値と、読み込んだ前記第２の部分レコードとを結合して複数のレコードを作成し、前記データ検索要求に対する検索結果として複数のレコードを返却することを特徴とする
請求項１に記載のデータベース管理方法。
【請求項３】
前記データベース管理装置は、入力される前記データベース定義情報に記述されているデータベースの境界要素に従って、部分データベースの要素名および部分データベースの個数を決定し、前記データベース分割定義を作成することを特徴とする
請求項１または請求項２に記載のデータベース管理方法。
【請求項４】
前記データベース管理装置は、入力される前記データベース定義情報に記述されているハッシュ空間長に従って、前記部分データベース制御部が計算する前記ハッシュ値の取りうる値を決定することを特徴とする
請求項１ないし請求項３のいずれか１項に記載のデータベース管理方法。
【請求項５】
前記データベース管理装置は、ユーザの身体から生体センサで取得した生体情報を、入力される前記位置特定キーとすることとし、
前記生体センサは、ユーザの瞳の中から取得する虹彩情報、ユーザの指から取得する指紋情報、および、ユーザの声から取得する声紋情報のうち、少なくとも１つの情報をユーザから生体情報として取得することを特徴とする
請求項１ないし請求項４のいずれか１項に記載のデータベース管理方法。
【請求項６】
前記データベース管理装置は、入力される前記データベース定義情報に記述されている分割指定に従って、データベースを部分データベースに分割するか否かを決定し、
前記記憶部は、さらに、データベースを記憶することを特徴とする
請求項１ないし請求項５のいずれか１項に記載のデータベース管理方法。
【請求項７】
前記部分データベース制御部は、前記ハッシュ関数として、前記第１の部分レコードのデータ値と、前記位置特定キーとから計算される被除数を、前記ハッシュ空間長で除算した余りを前記ハッシュ値とする剰余関数を計算することを特徴とする
請求項４ないし請求項６のいずれか１項に記載のデータベース管理方法。
【請求項８】
請求項１ないし請求項７のいずれか１項に記載のデータベース管理方法を、コンピュータである前記データベース管理装置に実行させるためのデータベース管理プログラム。
【請求項９】
複数の要素によって構成される複数のデータレコードを格納したデータベースを、特定の前記要素について分割した複数の部分データベースとして管理するデータベース管理装置であって、
前記データベース管理装置は、部分データベース制御部と、レコード分割部と、レコードアクセス部とを備えるとともに、データベース定義情報と、前記複数の部分データベースとを記憶部に記憶し、
前記データベース定義情報は、前記データベースに格納された前記複数のレコードにおける要素名と前記分割された部分データベースに格納された部分レコードにおける要素名との対応関係を示すデータベース分割定義と、２つの部分データベース間の対応関係を示すデータベース対応定義とを含み、
前記レコード分割部は、登録対象の前記複数のレコードを指定するデータ登録要求を受け付けると、前記データベース分割定義を参照して前記部分レコードの要素を取得し、登録対象における前記複数のレコードの要素から各部分レコードの要素を取り出す射影演算により、前記複数のレコードを複数の前記部分レコードへと分割し、
前記部分データベース制御部は、前記レコード分割部が分割した複数の部分レコードについて、前記データベース対応定義を参照して対応する２つの部分データベースについての部分レコードを選択し、
選択した一方の部分レコードである第１の部分レコードのデータ値と、前記データ登録要求に伴って入力される位置特定キーと、を入力パラメータとするハッシュ関数を計算し、その計算結果であるハッシュ値をもとに、選択したもう一方の部分レコードである第２の部分レコードの当該部分データベースにおける格納位置を計算し、
前記レコードアクセス部は、
前記記憶部内の部分データベースにおける、前記部分データベース制御部が計算した格納位置に、前記レコード分割部が分割した前記第２の部分レコードを格納することを特徴とする
データベース管理装置。
【請求項１０】
前記データベース管理装置は、さらに、レコード結合部を有し、
前記レコード結合部は、
検索条件を指定するデータ検索要求を受け付けると、前記データベース分割定義を参照して検索条件の要素が属する部分データベースを特定し、特定した部分データベースに格納されている部分レコードから、検索条件に該当する前記第１の部分レコードを検索し、
前記部分データベース制御部は、
前記レコード結合部が検索した前記第１の部分レコードから、前記データベース対応定義を参照して対応する前記第２の部分レコードを選択し、
検索した前記第１の部分レコードのデータ値と、前記データ検索要求に伴って入力される前記位置特定キーと、を入力パラメータとする前記ハッシュ関数を計算し、その計算結果である前記ハッシュ値をもとに、選択した前記第２の部分レコードの部分データベースにおける読込位置を計算し、
前記レコードアクセス部は、
前記記憶部内の部分データベース内における、前記部分データベース制御部が計算した読込位置から、前記第２の部分レコードを読み込み、
前記レコード結合部は、
検索した前記第１の部分レコードのデータ値と、読み込んだ前記第２の部分レコードとを結合して複数のレコードを作成し、前記データ検索要求に対する検索結果として複数のレコードを返却することを特徴とする
請求項９に記載のデータベース管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース管理方法、データベース管理プログラム、および、データベース管理装置に関する技術である。
【背景技術】
【０００２】
データベースに格納した機密情報の漏洩を防止するためには、外部からの不正アクセスを遮断することと、内部からの不正解読を困難にすることの両方の対策を行うことが推奨される。
【０００３】
特許文献１には、外部から機密情報にアクセスする利用者に対して、利用者認証処理を行う技術が開示されている。このような利用者認証処理によって、機密情報を参照するための情報処理システムが提供される。
【０００４】
特許文献２には、外部記録装置に格納する機密情報自体を暗号化して、内部から解読できないようにする技術が開示されている。つまり、機密情報自体を暗号化することによって、個人情報データベースに対して、許可されない者が個人情報を読み出しても、その解読を不可能にするか、あるいは全体情報の取得を不可能にする。
【特許文献１】特開２００６−１３４０１９号公報
【特許文献２】特開平１１−２７２６８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の技術をそのままデータベースに適用するだけでは、データベースの機密保持レベルおよびデータベースのアクセス性能レベルにおいて、不充分である。
【０００６】
特許文献１の手法では、利用者認証処理を介さず、外部記憶装置に平文で記録された情報を直接解析することで、機密情報を不正に読み取ることができてしまう。
特許文献２の手法では、暗号化されたデータに対して条件評価する場合に復号化が必要になり、性能が低下する場合がある。
【０００７】
本発明は、このような背景に鑑みてなされたものであり、外部からの不正アクセスと、内部からの不正解読との双方から適切にデータベースの機密情報を守るとともに、その機密情報へのアクセス性能を確保することを、主な目的とする。
【課題を解決するための手段】
【０００８】
前記課題を解決するため、本発明は、複数の要素によって構成される複数のデータレコードを格納したデータベースを、特定の前記要素について分割した複数の部分データベースとして管理するデータベース管理装置によるデータベース管理方法であって、
前記データベース管理装置が、部分データベース制御部と、レコード分割部と、レコードアクセス部とを備えるとともに、データベース定義情報と、前記複数の部分データベースとを記憶部に記憶し、
前記データベース定義情報が、前記データベースに格納された前記複数のレコードにおける要素名と前記分割された部分データベースに格納された部分レコードにおける要素名との対応関係を示すデータベース分割定義と、２つの部分データベース間の対応関係を示すデータベース対応定義とを含み、
前記レコード分割部が、登録対象の前記複数のレコードを指定するデータ登録要求を受け付けると、前記データベース分割定義を参照して前記部分レコードの要素を取得し、登録対象における前記複数のレコードの要素から各部分レコードの要素を取り出す射影演算により、前記複数のレコードを複数の前記部分レコードへと分割し、
前記部分データベース制御部が、前記レコード分割部が分割した複数の部分レコードについて、前記データベース対応定義を参照して対応する２つの部分データベースについての部分レコードを選択し、
選択した一方の部分レコードである第１の部分レコードのデータ値と、前記データ登録要求に伴って入力される位置特定キーと、を入力パラメータとするハッシュ関数を計算し、その計算結果であるハッシュ値をもとに、選択したもう一方の部分レコードである第２の部分レコードの当該部分データベースにおける格納位置を計算し、
前記レコードアクセス部が、
前記記憶部内の部分データベースにおける、前記部分データベース制御部が計算した格納位置に、前記レコード分割部が分割した前記第２の部分レコードを格納することを特徴とする。
その他の手段は、後記する。
【発明の効果】
【０００９】
本発明によれば、外部からの不正アクセスと、内部からの不正解読との双方から適切にデータベースの機密情報を守るとともに、その機密情報へのアクセス性能を確保することが可能になる。
【発明を実施するための最良の形態】
【００１０】
以下に、本発明が適用されるデータベースシステムの一実施形態について、図面を参照して詳細に説明する。
【００１１】
図１は、データベース管理装置１を示す構成図である。データベース管理装置１は、入力部９１、出力部９２、ＣＰＵ（Central Processing Unit）９３、メモリ９４、および、記憶部９５を含めて構成され、これらの構成要素は、内部バスで接続されている。
入力部９１は、例えば、キーボードやマウス、携帯電話の入力用ボタンとして構成される。入力部９１は、ユーザからの処理要求を受け付ける。
出力部９２は、例えば、液晶ディスプレイである。出力部９２は、データベース管理システム２の処理結果などを表示する。
ＣＰＵ９３は、メモリ９４に記憶されたプログラムを実行することにより、データベース管理システム２を構成する。
メモリ９４は、ＣＰＵ９３によって実行されるプログラム、および、そのプログラムの処理に必要なデータを記憶する。
記憶部９５は、例えば、ハードディスクやフラッシュメモリで構成され、表定義情報３０およびデータベース４０を記憶する。データベース４０は、全体表データ４１と、部分表データ４２とを管理する（詳細は図２の説明で後記する）。
【００１２】
入力部９１は、データベース４０にアクセスするために必要な位置特定キーの入力を受け付ける。位置特定キーは、データアクセスを許可された正規ユーザだけが取得可能な情報であり、データアクセス時に動的に付与される。位置特定キーは、例えば、ＣＰＵＩＤ、ＭＡＣアドレスや、生体情報など、ユーザだけが知りうる任意の情報を使用できる。
ここで、ＣＰＵＩＤは、ＣＰＵ固有の番号のことで、公式にはi486以降のx86系プロセッサで取得が可能である。ＭＡＣアドレスは、装置固有の番号のことで、装置の工場出荷時に書き込まれる。
また、生体情報は、ユーザごとに固有の情報であり、生体センサを介しての生体認証処理でユーザの身体から取得される。生体センサは、例えば、瞳の中から虹彩情報を取得したり、指から指紋情報を取得したり、声から声紋情報を取得したりする。
なお、位置特定キーは、携帯電話のシリアル番号などの各機器固有の情報が望ましいし、不正者にとって取得し難いものが望ましい。
【００１３】
表定義情報３０は、表概要定義３１と、表分割定義３２と、表対応定義３３と、から構成される。これらの表定義情報３０の各定義情報は、入力部９１を介して入力されるテキスト形式の設定ファイルである「表定義要求」を構文解析することにより、それぞれの定義情報に必要なデータを抽出することで、作成される。以下、表定義要求と、その表定義要求から作成される表定義情報３０とについて、表を参照して説明する。
【００１４】
【表１】
2010128670.tif 000003
【００１５】
表１は、表定義要求の一例を示す図である。この表定義要求は、ＳＱＬの文法に従って、記述されている。この表定義要求は、例えば、システム開発者などがデータベース４０を用いたシステムを構築する場合に、作成される。
【００１６】
１，９行目は、全体表データ４１を特定するための、全体表名の定義文である。１行目には「CUSTOMER_LIST（顧客名簿）」が、９行目には「TECHNICAL_GLOSSARY（技術用語集）」が、それぞれ定義されている。１，９行目の最後にある丸括弧は、対応する丸括弧と入れ子構造になっている。例えば、１〜６行目は、全体表「CUSTOMER_LIST」に関する定義文が記載される。
【００１７】
２行目〜５行目は、全体表「CUSTOMER_LIST」を構成する各列の情報を示す。２行目〜５行目の順序に従って、全体表の各列が構成される。例えば、２行目の「“NID” INT,」は、全体表の１番目の列名が「NID」であり、その列に記載されるデータのデータ型が「INT（整数型）」である旨を示す。
同様に、１０行目〜１３行目は、全体表「TECHNICAL_GLOSSARY」を構成する各列の情報を示す。
【００１８】
なお、５行目の電話番号（TEL_NO）のデータ型は「１２文字の文字列型（VARCHAR(12)）」としたが、１２文字を６バイトで格納してもよい。電話番号（045-077-6637など）を構成する各文字は、１０文字の数値部分および２文字のハイフン「−」である。よって、電話番号の１文字を０．５バイト（２の４乗で１６通り）で表現できるので、１２文字を６バイトで表現できる。例えば、電話番号「045-077-6637」は、ハイフン「−」を「0xA」で表現すると、「0x04、0x5A、0x07、0x7A、0x66、0x37」というように６バイト（１２文字）で表現できる。
【００１９】
６，７行目は、分割指定行である。
６行目のキーワード「SECURITY DIV COLUMN」は、全体表「CUSTOMER_LIST」を分割する旨（表２参照）を示す。システム開発者は、顧客名簿がエンドユーザから不正アクセスされないよう、全体表「CUSTOMER_LIST」を分割するように指定する。
一方、１４行目には、このキーワードが記載されていないため、全体表「TECHNICAL_GLOSSARY」は、分割されない。技術用語集は、特にデータを守る必要がないと、システム開発者が判断したためである。
６行目のキーワード「WITH」の前に記載されている「NAME」は、全体表の境界列（表３参照）が「NAME」である旨を示す。
６行目のキーワード「WITH」の後に記載されている「NAME,ADDRESS」は、全体表のハッシュ入力列名（表４参照）が、「NAME」および「ADDRESS」である旨を示す。
７行目の「HASH CAPACITY」のあとの「2000」は、ハッシュ空間長（表２参照）を示す。
【００２０】
【表２】
2010128670.tif 000004
【００２１】
表２は、表概要定義３１を示す。表概要定義３１は、全体表名と、分割フラグと、ハッシュ空間長と、を対応づけて構成する。分割フラグが「有り」のときには、その全体表名が示す全体レコードは、部分レコードへと分割されて部分表データ４２に登録される。つまり、顧客名簿は、データベース４０内において、全体表データ４１ではなく部分表データ４２として登録される。ハッシュ空間長は、ハッシュ値算出部２５のハッシュ関数の計算で使用されるパラメータである。
【００２２】
【表３】
2010128670.tif 000005
【００２３】
表３は、表分割定義３２を示す。表分割定義３２は、表概要定義３１において、分割フラグが「有り」の全体表名のデータ（CUSTOMER_LIST）だけを記録する。表分割定義３２は、全体表名と、全体表の列情報と、部分表番号と、を対応づけて構成する。
全体表の列情報は、列ごとの列順序と、列名と、列データ型と、境界列フラグと、により構成される。境界列フラグが「該当」である列は、部分表の区切りとなる最後の（最右の）列である。
部分表番号は、部分表データ４２を特定するための番号である（詳細は図２の説明で後記する）。
【００２４】
【表４】
2010128670.tif 000006
【００２５】
表４は、表対応定義３３を示す。表対応定義３３は、表概要定義３１において、分割フラグが「有り」の全体表名のデータ（CUSTOMER_LIST）だけを記録する。表対応定義３３は、全体表名と、部分表番号と、対応表番号と、ハッシュ入力列名と、を対応づけて構成する。
対応表番号は、部分レコード間の対応関係を示す番号であり、表対応定義３３の「部分表番号」列の値とは別の部分表番号の値が格納される。
ハッシュ入力列名は、部分レコード間の対応関係を求めるための、ハッシュ値算出部２５の入力パラメータとなるレコード値の列を特定するための名称である。
【００２６】
図１に戻って、データベース管理装置１の各処理部の説明を行う。データベース管理システム２は、表定義処理部１０と、部分表処理部２０と、全体表処理部８０と、を有する。
【００２７】
表定義処理部１０は、表定義作成部１１と、表定義アクセス部１２と、を有する。
表定義作成部１１は、入力部９１を介して入力される表定義要求を構文解析し、表定義情報３０を作成して、記憶部９５へ登録する。
表定義アクセス部１２は、部分表データ４２の部分レコードにアクセスするために必要な各定義情報を、表定義情報３０から取得する。
【００２８】
部分表処理部２０は、部分表制御部２１と、レコード分割部２２と、レコード結合部２３と、レコードアクセス部２４と、ハッシュ値算出部２５と、格納位置算出部２６と、を備える。
【００２９】
部分表制御部２１は、部分表データ４２のデータアクセス（データ更新、データ削除、データ登録、データ挿入、データ検索）を実施するために、部分表処理部２０の各処理部を制御する。なお、データ更新は、データ削除とした後にデータ登録を新規に実行することで、実現される。
レコード分割部２２は、表定義情報３０を用いて、１つの全体表データ４１の全体レコードを、複数の部分表データ４２の部分レコードに分割する。
レコード結合部２３は、表定義情報３０を用いて、レコード分割部２２で分割された複数の部分表データ４２を、１つの全体表データ４１の全体レコードへと結合する。
レコードアクセス部２４は、部分レコードを、格納位置算出部２６の計算結果である部分表データ４２のレコード位置へと読み書きする。
ハッシュ値算出部２５は、位置特定キーと部分レコード値とを入力パラメータとして、ハッシュ関数を計算し、その計算結果であるハッシュ値を出力する。
格納位置算出部２６は、ハッシュ値を入力パラメータとし、部分表データ４２のレコード位置を計算して、レコードアクセス部２４に出力する。
【００３０】
全体表処理部８０は、全体表データ４１を分割せずに直接データアクセス（読み書き）する。この全体表処理部８０は、従来のデータベースとの互換性を保つために構成されるものであり、部分表データ４２だけを用いる場合には、不要であるので省略してもよい。
【００３１】
図２は、データ登録要求として受け付けた１つの全体表データ４１の全体レコードを、２つの部分表データ４２に部分レコードとして登録する処理の概要を示す説明図である。この説明図では、データ登録要求として１レコードの全体レコードを登録する場合を説明するが、データ登録要求として２レコード以上まとめて登録が指定されている場合には、１レコードずつ個別に登録すればよい。
【００３２】
データベース４０（全体表データ４１、部分表データ４２）は、データを表形式で管理する。表形式の行をレコードと呼び、表形式の列をフィールド（属性）と呼ぶ。まず、全体表データ４１と、部分表データ４２との関係について説明する。
【００３３】
１つの全体表データ４１は、複数の部分表データ４２へと分割される。各全体表データ４１には、他の部分表データ４２と区別するための全体表名が、割り当てられる。各部分表データ４２は、他の部分表データ４２と区別するための部分表番号が、割り当てられる。よって、部分表データ４２の特定情報は、その部分表データ４２の作成元である全体表データ４１の全体表名と、自部分表データ４２に割り当てられる部分表番号と、の組の情報である。
【００３４】
全体表データ４１の各列（NID,NAME,ADDRESS,TEL_NO）は、分割される各部分表データ４２の各列へと、分配される。例えば、全体表データ４１の４列（NID,NAME,ADDRESS,TEL_NO）は、部分表番号＝１の部分表データ４２の２列（NID,NAME）と、部分表番号＝２の部分表データ４２の２列（ADDRESS,TEL_NO）と、に分配される。つまり、ｍ行ｎ列の全体表データ４１を、ｍ行ａ列の部分表データ４２と、ｍ行ｂ列の部分表データ４２とに分割する（ｎ＝ａ＋ｂ）。
よって、同じ全体表データ４１から作成される部分表データ４２どうしは、互いに共通する結合列を有さない。これにより、データベースの記憶領域を節約することができ、従来のＳＱＬの結合演算では、結合列がないので、部分表データ４２どうしの結合ができない。
【００３５】
さらに、１つの全体レコードが、複数の部分レコードへと分割され、各部分表データ４２に格納される過程において、各部分レコードの格納位置（〜行目）は、複数の部分レコード間で順序性が崩されている。例えば、部分レコード「１，鈴木太郎」は３行目に格納されているが、対応する部分レコード「茨城県  ひたちなか市△町□番地、000-000-0000」は４行目に格納されている。よって、３行目の部分レコード「１，鈴木太郎」が不正に参照されたとしても、その対応する部分レコードは３行目には存在しないので、不正ユーザは有効なデータを取得することができない。
【００３６】
一方、正規ユーザは、複数の部分表データ４２の対応する（３行目と４行目とが対応）部分レコードを取得して、横方向（列方向）に結合することで、全体表データ４１の全体レコードにアクセスできる。このとき、部分レコード間の対応付けには、正規ユーザが知っている位置特定キーを使用する。さらに、部分表データ４２における「Pointer」を設けることにより、算出したハッシュ値が同じ場合、つまり部分レコードである例えば（ADDRESS,TEL_NO）で算出したハッシュ値が同じ場合、同じ値が示された部分レコードを「Pointer」で接続するリスト構造を有することにより、格納することが可能となる。「Pointer」には、初期値として、そのリストの終端を表す値を入れておき、「Pointer」か否かを判定し、リストの末尾に追加するリスト構成を採ることも可能である。
【００３７】
入力部９１は、正規ユーザから、ＳＱＬ文で記述された以下のデータ登録要求を受け付ける。
「INSERT INTO CUSTOMER_LIST VALUES(1, '鈴木太郎', '茨城県ひたちなか市△町□番地','000-000-0000')」
【００３８】
レコード分割部２２は、データ登録要求で指定されている全体表名「CUSTOMER_LIST」に関する各定義情報を、表定義情報３０から取得する。これにより、全体表名「CUSTOMER_LIST」は、２つの部分表データ４２（NIDとNAMEとを格納する部分表、ADDRESSとTEL_NOとを格納する部分表）に分割されることがわかる。
【００３９】
レコード分割部２２は、２つの部分表データ４２（部分表番号＝１，２）の２列になるように、ＳＱＬの射影演算を用いて、データ登録要求の全体レコード（1, '鈴木太郎', '茨城県ひたちなか市','000-000-0000'）を、部分レコード（1, '鈴木太郎'）と、部分レコード（'茨城県ひたちなか市','000-000-0000'）と、に分割する。
【００４０】
以下、ハッシュ値算出部２５および格納位置算出部２６が実行する、部分レコード間の対応付け（レコード位置の特定処理）を説明する。
【００４１】
ハッシュ値算出部２５は、入力部９１から入力される位置特定キーと、部分レコードのデータ値（鈴木太郎）とを入力パラメータとして、ハッシュ関数を計算し、その結果であるハッシュ値を出力する。
なお、表対応定義３３の全体表名＝「CUSTOMER_LIST」および部分表番号＝「１」におけるハッシュ入力列名が「NAME」であるので、部分表番号＝「１」の部分レコードの「NAME」列のデータ値（鈴木太郎）がハッシュ計算に使用される。さらに、ハッシュ空間長は、表概要定義３１の全体表名「CUSTOMER_LIST」に対応する値（2000）がハッシュ計算に使用される。
【００４２】
ハッシュ値算出部２５は、例えば、ハッシュ関数の一例として、剰余演算（mod）を用いて、ハッシュ値を計算する。もちろん、他のハッシュ関数（MD5,SHA1など）を代わりに用いてもよい。
H  =  (COLV  XOR  KEY)  mod  HC
ここで、ハッシュ値：H
ハッシュ入力列名のデータ値：COLV
位置特定キー  ：KEY
ハッシュ空間長：HC
XOR  ：左右に指定した値の排他的論理和（ビット演算）を算出する演算子
mod  ：左右に指定した値の剰余を行う演算子
【００４３】
格納位置算出部２６は、ハッシュ値算出部２５の出力するハッシュ値をもとに、以下に示すように、部分表データ４２のデータベース上の格納位置を計算する。
PP  =  (CCOLLEN×H)  ／  PSIZE
SP  =  ((CCOLLEN×H)  mod  PSIZE)  ／  CCOLLEN
ここで、ページサイズ：PSIZE。なお、ページとは、データベース４０とアプリケーションとの間で物理的に入出力する最小のデータ単位である。
部分表行長：CCOLLEN
ハッシュ値：H
部分表格納ページ位置：PP
部分表格納スロット位置：SP。なお、スロットとは、ページ内に行データを配置する物理的領域の単位である。
×  ：左右に指定した値の乗算を行う演算子
／  ：左右に指定した値の除算を行う演算子
mod  ：左右に指定した値の剰余を行う演算子
【００４４】
レコードアクセス部２４は、格納位置算出部２６が計算した格納位置（例えば、「４」行目）へ、対応する部分レコードを格納する。対応する部分レコードとは、表対応定義３３の部分表番号に対応する対応表番号の部分レコードである。例えば、「鈴木太郎」を元に計算した格納位置（４行目）は、部分レコード（1, '鈴木太郎'）の格納位置ではなく、対応する部分レコード（'茨城県ひたちなか市','000-000-0000'）の格納位置である。
【００４５】
以上、図２を参照して、所定の部分レコードから対応する別の部分レコードの格納位置を計算する処理（部分レコード間の対応付け）を説明した。図２では、部分表番号＝１のデータ値から部分表番号＝２の格納位置を求めることとしたが、同様に、部分表番号＝２のデータ値から部分表番号＝１の格納位置を求めることで、全体レコードが各部分レコードに分割されて、格納される。
【００４６】
これにより、不正ユーザによって、データベース４０の部分表データ４２が不正に参照されても、ハッシュ関数の具体的な処理内容と、そのハッシュ関数への入力パラメータとなる位置特定キーとが分からない限り、格納された部分レコード１と部分レコード２の関連付けを行う方法を分からなくすることが可能となる。
よって、鈴木太郎という人の住所と電話番号がどこに格納されているかが分からなくなり、例えば個人情報が不正に利用し易い状態で漏洩することを防ぐことができる。
一方、正規ユーザは、データ登録処理で使用した位置特定キーを、図３で後記するデータ検索処理にも使用することにより、有効なデータにアクセスすることができる。さらに、部分表データ４２における「Pointer」を利用することにより、算出したハッシュ値が同じ場合、「Pointer」によるリスト構造を辿り、同じ値が示された部分レコードを検索することが可能となる。
【００４７】
図３は、データ検索要求として受け付けた検索条件を元に、検索条件に適合する部分レコードを検索し、対応する他の部分レコードと結合することにより、１つの全体表データ４１の全体レコードを取得する処理の概要を示す説明図である。
図３のデータ検索要求を入力する正規ユーザは、前もって図２のデータ登録要求を入力しており、データ登録要求とデータ検索要求とで、同じ位置特定キーを使用する。
【００４８】
入力部９１は、ＳＱＬ文で記述された、以下のデータ検索要求を受け付ける。
SELECT NID, NAME, ADDRESS, TEL_NO FROM CUSTOMER_LIST WHERE NID=1
ここで、「WHERE NID=1」は、「NID=1」に適合するレコードを検索することを示す。
「FROM CUSTOMER_LIST」は、検索対象の全体列名が「CUSTOMER_LIST」であることを示す。
「SELECT NID, NAME, ADDRESS, TEL_NO」は、WHEREで指定された検索条件「NID=1」に適合するレコードから取り出す列を指定する。
【００４９】
レコード結合部２３は、表定義情報３０を参照して、データ検索要求で指定された「CUSTOMER_LIST」が、２つの部分表データ４２（NIDとNAMEとを格納する部分表、ADDRESSとTEL_NOとを格納する部分表）に分割されることを把握する。
そして、レコード結合部２３は、「WHERE NID=1」で指定されている「NID」を含む部分表番号＝１の部分表データ４２から、適合するレコード「1,"鈴木太郎"」を検索し、読み込む。
【００５０】
ここで、図２と同じように、ハッシュ値算出部２５および格納位置算出部２６が実行する、部分レコード間の対応付け（レコード位置の特定処理）により、部分表番号＝１から対応する部分表番号＝２のレコード位置（読込位置である４行目）を、特定する。
【００５１】
レコードアクセス部２４は、格納位置算出部２６が計算した格納位置（例えば、「４」行目）から、対応する部分レコード「'茨城県ひたちなか市','000-000-0000'」を読み込む。ここでは、図２とは違い、格納処理の代わりに読込処理が実行される。
【００５２】
レコード結合部２３は、検索条件に適合する部分レコード「1,"鈴木太郎"」と、レコードアクセス部２４が読み込んだ対応する部分レコード「'茨城県ひたちなか市','000-000-0000'」とを列方向（横方向）にそのまま結合し、１レコード分の全体表データ４１を復元する。以上により、正規ユーザは、図２で格納した１レコード分の全体表データ４１を取得することができる。
【００５３】
図４は、１つの全体表データ４１を、３つの部分表データ４２に分割する例を示す説明図である。
図４（ａ）では、１つの全体表データ４１（NID,NAME,ADDRESS,TEL_NO）が、第１部分表データ４２（NID,NAME）と、第２部分表データ４２（ADDRESS）と、第３部分表データ４２（TEL_NO）と、に分割されている。
第１部分表データ４２のNAME列値から、第２部分表データ４２の格納位置が求まる。第２部分表データ４２のADDRESS列値から、第３部分表データ４２の格納位置が求まる。第３部分表データ４２のTEL_NO列値から、第１部分表データ４２の格納位置が求まる。
このようにして、各部分表データ４２間は、隣接する部分表データ４２を順に辿ることができ、１つの全体表データ４１へと結合することができる。
【００５４】
図４（ｂ）は、図４（ａ）における表対応定義３３を示す。このようにして、部分表の分割数は図２，図３で示した２分割に限定されず、３つ以上の分割を行うこととしてもよい。分割数を増やすことにより、不正ユーザは、全体表データ４１への結合を類推することが、より困難になる。
【００５５】
図５は、表定義作成部１１が実行する、入力部９１を介して入力された表定義要求から表概要定義３１を作成する手順を示すフローチャートである。
【００５６】
Ｓ１０１において、表定義要求から、全体表名と、分割フラグの指定と、を取得する。
例えば、表１の表定義要求からは、１つめの表についての全体表名「CUSTOMER_LIST」および分割フラグの表記「SECURITY DIV COLUMN」を取得し、２つめの表についての全体表名「TECHNICAL_GLOSSARY」および分割フラグ「なし」を取得する。
なお、分割フラグの表記「SECURITY DIV COLUMN」があるときには、その全体表を複数の部分表へと分割することで外部からの不正アクセスを困難にし、安全性を確保する必要があることを示す。
【００５７】
Ｓ１０２において、Ｓ１０１で取得した分割フラグの表記「SECURITY DIV COLUMN」の有無により、全体表を部分表へと分割する必要が有るか否かを判定する。この判定を満たすときにはＳ１０３へ、満たさないときにはＳ１０４へ、処理を進める。
【００５８】
Ｓ１０３において、分割フラグに「有り」を代入し、ハッシュ空間長に表定義要求の「HASH CAPACITY」の値（例えば、2000）を代入する。
Ｓ１０４において、分割フラグに「無し」を代入し、ハッシュ空間長に「未定義」を代入する。
Ｓ１０５において、Ｓ１０１〜Ｓ１０４で取得した各情報（全体表名、分割フラグ、ハッシュ空間長）を、１つのレコードとして対応づけて、表概要定義３１に追加する。
【００５９】
図６は、表定義作成部１１が実行する、入力部９１を介して入力された表定義要求から表分割定義３２を作成する手順を示すフローチャートである。
【００６０】
Ｓ２０１において、部分表番号カウンタに、初期値として１を代入する。なお、部分表番号カウンタは、表分割定義３２の「部分表番号」列に設定する値を示す。
Ｓ２０２において、表定義要求から、登録対象の「全体表名」と、その表の構成要素である列定義行と、を取得する。例えば、１行目の全体表名「CUSTOMER_LIST」と、２〜５行目の列定義行（NID、NAME、ADDRESS、TEL_NO）と、を取得する。取得した列定義行には、列名（２行目のNIDなど）と、列データ型（２行目の整数型を示すＩＮＴなど）とが、対応づけられている。さらに、取得した列定義行間の順序は、列順序に該当する。
【００６１】
Ｓ２０３において、Ｓ２０２で取得した列定義行から、行の記載順序に従って１つずつ選択するループを開始する。
Ｓ２０４において、ループで選択されている列が、境界列に該当するか否かを判定する。この判定を満たすときにはＳ２０５へ、満たさないときにはＳ２０６へ、処理を進める。例えば、表定義要求から境界列の定義情報を取得する。６行目のキーワード「WITH」の前に記載されている「NAME」は、全体表の境界列が「NAME」である旨を示す。よって、ループで選択されている列が「NAME」なら、互いに列名が一致するので、判定を満たす。
【００６２】
Ｓ２０５において、境界列フラグに「該当」を代入する。
Ｓ２０６において、境界列フラグに「非該当」を代入する。
Ｓ２０７において、Ｓ２０１〜Ｓ２０６で取得した各情報（全体表名、列順序、列名、列データ型、境界列フラグ、部分表番号カウンタの値）を、１つのレコードとして対応づけて、表分割定義３２に登録する。
【００６３】
Ｓ２０８において、境界列フラグが「該当」か否かを判定する。この判定を満たすときにはＳ２０９へ、満たさないときにはＳ２１０へ、処理を進める。
Ｓ２０９において、部分表番号カウンタに１を足す。
Ｓ２１０において、Ｓ２０３からのループを終了する。
【００６４】
図７は、表定義作成部１１が実行する、入力部９１を介して入力された表定義要求から表対応定義３３を作成する手順を示すフローチャートである。
【００６５】
Ｓ３０１において、初期値として、部分表番号カウンタに１を代入し、列順序カウンタに１を代入する。なお、部分表番号カウンタは、部分表を構成する列が属する部分表の番号を示す。
Ｓ３０２において、表定義要求から、登録対象の「全体表名」と、その表の「ハッシュ入力列名」と、を取得する。
Ｓ３０３において、Ｓ３０２で取得した「ハッシュ入力列名」から、表定義要求の記載順序（列順序カウンタが示す順序）に従って１つずつ選択するループを開始する。なお、１回のループを実行するごとに、列順序カウンタの値を１ずつ加算する。
Ｓ３０４において、ハッシュ入力列の構文上の指定順が偶数か否かを判定する。この判定を満たすときにはＳ３０５へ、満たさないときにはＳ３０６へ、処理を進める。
【００６６】
Ｓ３０５において、対応表番号に「部分表番号カウンタ値−１」を代入する。
Ｓ３０６において、対応表番号に「部分表番号カウンタ値＋１」を代入する。
Ｓ３０７において、Ｓ３０１〜Ｓ３０６で取得した各情報（全体表名、部分表番号カウンタ値、対応表番号、ハッシュ入力列名）を、１つのレコードとして対応づけて、表対応定義３３に追加する。
【００６７】
Ｓ３０８において、ハッシュ入力列の構文上の指定順が奇数か否かを判定する。この判定を満たすときにはＳ３０９へ、満たさないときにはＳ３１０へ、処理を進める。
【００６８】
Ｓ３０９において、部分表番号カウンタに１を足す。
Ｓ３１０において、Ｓ３０３からのループを終了する。
【００６９】
図８（ａ）は、図２で説明したデータ登録処理の詳細を示すフローチャートである。このフローチャートでは、部分表制御部２１は、データ登録処理で指定された全体表データ４１に対して、表分割定義３２に従って部分表データ４２に分割し、データベース４０へ格納する。
【００７０】
Ｓ４０１において、部分表制御部２１は、入力部９１を介して入力されたデータ登録要求から、１レコード分の登録対象データと、その位置特定キーと、を取得する。
Ｓ４０２において、表定義アクセス部１２は、Ｓ４０１で取得した登録対象データの全体表名に一致するレコードを表概要定義３１から検索し、検索したレコードの分割フラグと、ハッシュ空間長と、を取得する。ここで、登録対象データの全体表が部分表に分割されていない（分割フラグが「無し」）場合、従来技術に従って、全体表処理部８０が、登録対象データの全体表データ４１を、そのまま分割せずにデータベース４０へ格納する。
【００７１】
Ｓ４０３において、部分表制御部２１は、部分表番号カウンタに、初期値として１を代入する。
Ｓ４０４において、部分表制御部２１は、Ｓ４０３で初期化した部分表番号カウンタを１ずつ加算するループを開始する。つまり、このループを実行するごとに、部分表番号カウンタの値が１ずつ加算される。
Ｓ４０５において、表定義アクセス部１２は、表対応定義３３から、取得した全体表名および部分表番号カウンタ値の組をキーとして検索し、該当するレコードを取得する。
【００７２】
Ｓ４０６において、レコード分割部２２は、データ登録要求の全体表データ４１から、部分表番号カウンタ値が示す部分表に格納する部分レコードへ、１レコード分のデータを分割する。具体的には、後記するレコード分割処理（図８（ｂ））をサブルーチンとして呼び出す。
例えば、Ｓ４０６を１回目に実行したとき（部分表番号カウンタ値＝１）には、列（NID,NAME）からなる部分表（部分表番号＝１）のレコードが分割される。次に、Ｓ４０６を２回目に実行したとき（部分表番号カウンタ値＝２）には、列（ADDRESS,TEL_NO）からなる部分表（部分表番号＝２）のレコードが分割される。
【００７３】
Ｓ４０７において、部分表制御部２１（ハッシュ値算出部２５、格納位置算出部２６）は、図２のレコード位置特定処理で説明したように、Ｓ４０１で取得した位置特定キーと、Ｓ４０６で分割した部分レコードのデータ値とから、対応する部分レコードの格納位置を特定する。なお、対応する部分レコードとは、Ｓ４０５で取得した表対応定義３３のレコードの「対応表番号」で示される部分表のレコードを示す。
【００７４】
Ｓ４０８において、レコードアクセス部２４は、Ｓ４０７で特定した格納位置へ、対応する部分レコードを格納する。
Ｓ４０９において、部分表制御部２１は、Ｓ４０４からのループを終了する。
【００７５】
図８（ｂ）は、レコード分割部２２により実行される、Ｓ４０６のサブルーチンを示すフローチャートである。このサブルーチンでは、分割するレコードが属する部分表を指定するため、その部分表の特定情報（全体表名と、部分表番号カウンタ値）が引数として渡される。
【００７６】
Ｓ５０１において、表分割定義３２から、引数で渡された部分表の特定情報に該当するレコードを検索し、検索したレコードの「列名」を取得する。
Ｓ５０２において、データ登録要求の１レコード分の全体表データ４１から、取得したレコードの「列名」を指定するＳＱＬの射影演算により、Ｓ５０１で取得したレコードの「列名」に該当する部分レコードを取り出す。
Ｓ５０３において、Ｓ５０２で取り出した部分レコードを、分割結果としてサブルーチンの呼出元へと返却する。
【００７７】
図９は、図３で説明したデータ検索処理の詳細を示すフローチャートである。
このフローチャートでは、部分表制御部２１は、入力部９１を介して入力されたデータ検索要求を受信すると、データ検索要求で指定された部分表データ４２から、検索条件に適合する部分レコードを取得する。
さらに、部分表制御部２１は、取得した部分レコードに対応する他の部分レコードを取得し、取得した部分レコード間を結合して全体表のレコードを構成し、その出力レコードを作成する。
【００７８】
入力されるデータ検索要求は、その検索条件として、ＳＱＬの選択演算（選択列のデータ値が、選択条件を満たしている）や、ＳＱＬの射影演算（射影列のデータ値を取り出す）が指定される。
なお、データ検索要求の処理対象となる表が分割されていない（分割フラグが「無し」）場合には、本フローチャートを実行せず、従来の全体表処理部８０によるデータ検索処理が実行される。
【００７９】
Ｓ６０１において、部分表制御部２１は、部分表選択処理（図１０）をサブルーチンとして呼び出すことにより、処理対象の部分表番号リストと、その部分表番号リストに含まれる初回処理の部分表番号と、を取得する。
Ｓ６０２において、部分表制御部２１は、入力部９１を介して、位置特定キーを取得する。
【００８０】
Ｓ６０３において、部分表制御部２１は、データ検索要求に適合するレコードを順に選択するループを開始する。
Ｓ６０４において、表定義アクセス部１２は、表対応定義３３から、データ検索要求で指定される「全体表名」に適合するレコードを検索し、検索されたレコードの「ハッシュ入力列名」を取得する。
Ｓ６０５において、レコードアクセス部２４は、Ｓ６０３のループで選択されている１つのレコードについて、Ｓ６０１で取得した初回処理の部分表番号に対応する部分表の部分レコードを取得する。さらに、表定義アクセス部１２は、表対応定義３３から、データ検索要求で指定される「全体表名」と、Ｓ６０１で取得した初回処理の「部分表番号」との組をキーにして検索し、該当するレコード（対応表番号、ハッシュ入力列名）を取得する。
【００８１】
Ｓ６０６において、部分表制御部２１は、Ｓ６０１で取得した処理対象の部分表番号リストに含まれる部分表番号を順に１つずつ選択するループを開始する。なお、初回処理の部分表番号は、このループにおいて、最初に選択される。
Ｓ６０７において、部分表制御部２１（ハッシュ値算出部２５、格納位置算出部２６）は、Ｓ６０２で取得した位置特定キーと、Ｓ６０６で選択された部分表番号の部分レコードのデータ値とから、対応する部分レコードの読込位置を特定する。なお、対応する部分レコードとは、Ｓ６０６のループで選択中の部分表番号についての表対応定義３３での「対応表番号」で示される部分表のレコードを示す。
Ｓ６０８において、レコードアクセス部２４は、Ｓ６０７で特定した読込位置から、対応する部分レコードを読み込む。
【００８２】
Ｓ６０９において、レコード結合部２３は、Ｓ６０８で読み込んだ１レコード分の部分レコードを、１レコード分の全体レコードに結合する。この結合処理は、ＳＱＬの結合演算と異なり、部分レコードと全体レコードとで共通する列は存在しないため、部分レコードをそのまま列方向（横方向）に全体レコードとつなぎ合わせる（図３参照）。
【００８３】
Ｓ６１０において、部分表制御部２１は、Ｓ６０６からのループを終了する。
Ｓ６１１において、部分表制御部２１は、Ｓ６０３からのループを終了する。
【００８４】
図１０は、部分表制御部２１が実行する、部分表選択処理のサブルーチン（Ｓ６０１）の詳細を示すフローチャートである。
【００８５】
Ｓ７０１において、入力を受け付けたデータ検索要求から、データ検索要求の指定列に対応する全体表名および列名を取得する。データ検索要求の指定列とは、ＳＱＬの選択演算における選択列や、ＳＱＬの射影演算における射影列を示す。
【００８６】
Ｓ７０２において、Ｓ７０１で取得した列名を１つずつ選択するループを開始する。
Ｓ７０３において、表分割定義３２から、Ｓ７０１で取得した「全体表名」およびＳ７０２のループで選択されている「列名」をキーとして検索し、適合するレコードの「部分表番号」を取得し、返却値の「処理対象の部分表番号リスト」に追加する。
Ｓ７０４において、Ｓ７０２からのループを終了する。
【００８７】
Ｓ７０５において、入力を受け付けたデータ検索要求の指定列として、ＳＱＬの選択演算における選択列が指定か否かを判定する。この判定を満たすときにはＳ７０６へ、満たさないときにはＳ７０７へ、処理を進める。
Ｓ７０６において、返却値の「処理対象の部分表番号リスト」に含まれる部分表番号のうち、指定された選択列を含む部分表の部分表番号を、返却値の「初回処理の部分表番号」に設定する。
Ｓ７０７において、返却値の「処理対象の部分表番号リスト」に含まれる部分表番号のうち、最も小さい部分表番号を、返却値の「初回処理の部分表番号」に設定する。
Ｓ７０８において、「処理対象の部分表番号リスト」と、「初回処理の部分表番号」とを返却する。
【００８８】
以上説明した本実施形態によれば、全体レコードを部分レコードに分割し、部分レコード間の対応付けに位置特定キーを用いることによって、レコードの情報保護を実現する。
まず、位置特定キーを知っている正規ユーザは、対応付けが成功するので、部分レコードから全体レコードを構成することができ、データアクセスが通常通り実現できる。
一方、位置特定キーを知らない不正ユーザは、対応付けが失敗するので、部分レコードから全体レコードを構成できず、データアクセスがブロックされる。
【００８９】
そして、個人認証キーそのものを可否認証（正解値との照合）する代わりに、位置特定キーを用いて部分レコード間の対応付けをすることにより、可否認証と同等の効果を得る。つまり、部分レコード間の対応付けに失敗した場合、互いに関係ない部分レコード同士を全体レコードとして結合した無効なデータを出力する。これにより、位置特定キーを知らない不正ユーザは、有効なデータへのアクセスができなくなる。そして、可否認証をしないことで、認証結果を偽るＳＱＬインジェクション攻撃を防御することができる。
【００９０】
さらに、部分レコードの格納位置が互いに対応付け困難なように順序性が崩されており、部分レコードを直接参照して全体レコードを復元することは困難である。つまり、部分レコードを格納する部分表には格納位置による耐タンパ性があるため、部分レコードを直接暗号化することで耐タンパ性を高めることをしなくても、充分なセキュリティが保たれている。よって、暗号化および復号化に関するオーバーヘッドが発生しないので、セキュリティを高めつつ、データベースへのアクセス速度の低下を抑制できる。
【００９１】
以上説明した本実施形態と、請求項に記載された本願発明とは、以下のように用語が対応する。
本実施形態における「全体表データ４１」は、本願発明の「データベース」に対応する。
本実施形態における「部分表データ４２」は、本願発明の「部分データベース」に対応する。
本実施形態における「全体表データ４１の全体レコード」は、本願発明の「複数のレコード」に対応する。
本実施形態における「部分表データ４２の部分レコード」は、本願発明の「部分レコード」に対応する。
本実施形態における「表データの列」は、本願発明の「要素」に対応する。
本実施形態における「表データの境界列」は、本願発明の「境界要素」に対応する。
本実施形態における「部分表制御部２１」は、本願発明の「部分データベース制御部」に対応する。
本実施形態における「表定義情報３０」は、本願発明の「データベース定義情報」に対応する。
本実施形態における「表分割定義３２」は、本願発明の「データベース分割定義」に対応する。
本実施形態における「表対応定義３３」は、本願発明の「データベース対応定義」に対応する。
【図面の簡単な説明】
【００９２】
【図１】本発明の一実施形態に関するデータベース管理装置を示す構成図である。
【図２】本発明の一実施形態に関するデータ登録処理の概要を示す説明図である。
【図３】本発明の一実施形態に関するデータ検索処理の概要を示す説明図である。
【図４】本発明の一実施形態に関する３つの部分表に分割する例を示す説明図である。
【図５】本発明の一実施形態に関する表定義要求から表概要定義３１を作成する手順を示すフローチャートである。
【図６】本発明の一実施形態に関する表定義要求から表分割定義３２を作成する手順を示すフローチャートである。
【図７】本発明の一実施形態に関する表定義要求から表対応定義３３を作成する手順を示すフローチャートである。
【図８】本発明の一実施形態に関する図２のデータ登録処理の詳細を示すフローチャートである。
【図９】本発明の一実施形態に関する図３のデータ検索処理の詳細を示すフローチャートである。
【図１０】本発明の一実施形態に関するデータ検索処理における部分表選択処理の詳細を示すフローチャートである。
【符号の説明】
【００９３】
１      データベース管理装置
２      データベース管理システム
１０    表定義処理部
１１    表定義作成部
１２    表定義アクセス部
２０    部分表処理部
２１    部分表制御部
２２    レコード分割部
２３    レコード結合部
２４    レコードアクセス部
２５    ハッシュ値算出部
２６    格納位置算出部
３０    表定義情報
３１    表概要定義
３２    表分割定義
３３    表対応定義
４０    データベース
４１    全体表データ
４２    部分表データ
８０    全体表処理部
９１    入力部
９２    出力部
９３    ＣＰＵ
９４    メモリ
９５    記憶部
【図１】
2010128670.tif 000007
【図２】
2010128670.tif 000008
【図３】
2010128670.tif 000009
【図４】
2010128670.tif 000010
【図５】
2010128670.tif 000011
【図６】
2010128670.tif 000012
【図７】
2010128670.tif 000013
【図８】
2010128670.tif 000014
【図９】
2010128670.tif 000015
【図１０】
2010128670.tif 000016