(57)【要約】【課題】メモリを無駄に消費することなく、ＦＡＳＴ形式データに対して主キーを設定できるようにすること。【構成】データベースシステム１０は、メモリユニット１０ｅ上にＦＡＳＴ形式データ１３を展開した後、テーブル形式データ１１の各レコードが有する複数のフィールドにそれぞれ対応する属性のうち、何れかの属性が操作者によって指定されたときに、その属性の属性値が、各レコードを識別することを可能にする一意性を有しているか否かを、バリューリスト１３ｂとバリュー番号リスト１３ｃの行数の一致性に基づいて判断し（ステップＳ２０８、Ｓ２０９）、その属性の属性値が、各レコードを識別することを可能にする一意性を有していた場合に、その属性セットのバリュー番号リスト１３ｃを、その属性セットが主キーであることを示す「ＯＮ」というキー情報を０行目にのみ有するリストに書き換える（ステップＳ２１１）。【選択図】図４
2008305080.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを、
所定の指示を操作者から受け付けると、幾つかのフィールドにそれぞれ属性値を格納したレコードを複数有するテーブル形式データを、コンパイルして、バリューリストとバリュー番号リストとからなる属性セットを前記フィールドと同数だけ含むＦＡＳＴ形式データを、メモリ上に展開するコンパイル手段、
前記テーブル形式データの各レコードが有する複数のフィールドにそれぞれ対応する複数の属性の中から選択された一つの属性を指定する情報を、操作者から受け付ける主キー対象受付手段、
前記ＦＡＳＴ形式データにおける前記主キー対象受付手段が受け付けた情報により指定される属性に対応する属性セットにおいて、バリューリストとバリュー番号リストの行数が一致するか否かを判別する判別手段、及び、
前記判別手段がバリューリストとバリュー番号リストの行数が一致すると判別した場合に、そのバリュー番号リストを、その属性セットが主キーであることを示すキー情報のみからなるリストに書き換える書換手段
として機能させる
ことを特徴とするデータ管理プログラム。
【請求項２】
前記コンピュータを、更に、
主キーに設定されている属性セットを変更するために、何れかの属性を指定する情報を、操作者から受け付ける変更指示受付手段、
前記変更指示受付手段が受け付けた情報により指定される属性に対応する属性セットにおいて、バリューリストとバリュー番号リストの行数が一致するか否かを判別する第２の判別手段、
前記判別手段がバリューリストとバリュー番号リストの行数が一致すると判別した場合に、主キーが設定されている属性セットのバリュー番号リストの各行に元のバリュー番号を復元する復元手段、及び、
前記変更指示受付手段が受け付けた情報により指定される属性に対応する属性セットのバリュー番号リストを、その属性セットが主キーであることを示すキー情報のみからなるリストに書き換える第２の書換手段
として機能させる
ことを特徴とする請求項１記載のデータ管理プログラム。
【請求項３】
前記コンピュータを、更に、
前記テーブル形式データに追加すべきレコードとして複数の属性値からなる情報を、操作者から受け付ける追加情報受付手段、
前記追加情報受付手段が受け付けた情報に含まれる属性値のうち、メモリ上のＦＡＳＴ形式データにおいて主キーに設定されている属性セットに対応する属性の属性値を特定する特定手段、
前記特定手段が特定した属性値を検索条件として、ＦＡＳＴ形式データにおいて主キーに設定されている属性セットのバリューリストを検索する検索手段、及び、
前記検索手段が検索条件の属性値を前記バリューリストから検出しなかった場合に、前記追加情報受付手段が受け付けた複数の属性値を、前記ＦＡＳＴ形式データの前記各バリューリストに反映し、且つ、前記各バリュー番号リストを更新する更新手段
として機能させる
ことを特徴とする請求項１記載のデータ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを管理するためのプログラムに、関する。
【背景技術】
【０００２】
周知のように、データベースは、互いに共通する属性を幾つか有する複数の情報と、それら情報に対して検索や編集などの情報処理を行うための機能とからなる。データベースは、複数の情報を、情報処理がし易いような形態（データ構造）で管理する。特に、近年主流となっているリレーショナルデータベースは、各情報を、その情報が有する各属性の値をそれぞれ対応するフィールドに格納したレコードとして、管理する。このようなレコードの形態（データ構造）を持つ情報は、テーブル形式データと称される。
【０００３】
このテーブル形式データを取り扱うデータベースでは、一つのテーブルについて、各レコード（データベースが管理すべき各情報）を識別することを可能にする一意性のある属性値の一群が格納されたフィールドを、主キーとして設定することができるようになっている。この主キーによれば、別のテーブルの各レコードがその主キーと同じ属性のフィールド（いわゆる外部キー）を有している場合に、その別のテーブルと元のテーブルとに対し、主キーと外部キーの属性値が一致するレコード同士を関連付けることによって、関係（リレーションシップ）を持たせることができる。
【０００４】
ところで、特許文献１及び非特許文献１乃至３に記載されるように、最近、処理速度の向上のため、オンメモリデータベースが開発されつつある。このオンメモリデータベースは、ストレージ内のテーブル形式データをＦＡＳＴ［Filter Array Structure］形式データに変換（コンパイル）してメモリ上に展開し、そのメモリ上のＦＡＳＴ形式データに対して情報処理を行うものである。このＦＡＳＴ形式データは、特許文献１及び非特許文献１乃至３に記載されるように、以下の要領にて、従来のテーブル形式データから、変換される。
【０００５】
第一工程として、従来のテーブル形式データにおける各レコードの順番の番号が、そのレコードを識別するための一意な番号（ルート番号）として定義される。第二工程として、従来のテーブル形式データの各フィールドについて、全レコードがそのフィールドに持つ属性値を昇順に格納したバリューリストが、作成される。第三工程として、各バリューリストに対し、そのバリューリスト内の全属性値に対してその順番の番号をバリュー番号として定義する処理が、施される。第四工程として、従来のテーブル形式データの各フィールドについて、全レコードがそのフィールドに持つ属性値にそれぞれ対応するバリュー番号をルート番号の順に格納したバリュー番号リストが、作成される。つまり、従来のテーブル形式データのフィールド（属性）ごとに、バリューリストとバリュー番号リストのセットが作成されることによって、ＦＡＳＴ形式データが生成される。従って、ＦＡＳＴ形式では、一つのバリューリストと一つのバリュー番号リストとのセットによって、データベースが管理すべき全情報のうちの一属性の内容が定義されている。なお、以下では、一つの属性についての一つのバリューリストと一つのバリュー番号リストとのセットを、属性セットと表記する。
【０００６】
しかしながら、ＦＡＳＴ形式では、一つのバリューリストと一つのバリュー番号リストとからなる属性セットで定義される属性は、互いに同一の構成となっており、そのうちの一つの属性を主キーとして設定できるようにはなっていない。
【０００７】
勿論、ＦＡＳＴ形式データを取り扱うオンメモリデータベースにおいて、属性値の一意性が保証される属性を、主キーとして設定することも考えられなくはないが、現状では、属性値の一意性を保証するための外部アプリケーションを別途用意せねばならないという事情がある。
【０００８】
また、属性値として連続的な値を複数格納したバリューリストとそれら属性値のバリュー番号を格納したバリュー番号リストとからなる属性セットを、主キーとして、ＦＡＳＴ形式データに追加することも考えられなくはないが、そうすると、その属性セットに係るバリューリストとバリュー番号リストの内容が重複するため、メモリが無駄に消費されるという新たな問題が生じてしまう。
【０００９】
【特許文献１】特許第３５８１８３１号
【非特許文献１】「Ｏｈ−Ｐａ  １／３のコンセプト」、株式会社富士通ビー・エス・シー、［online］、［平成１９年５月１１日検索］、インターネット＜ＵＲＬ：http://www.bsc.fujitsu.com/services/ohpa/concept/＞
【非特許文献２】「オンメモリデータベースによる高速データ処理が情報活用を加速」、日経ＢＰ社、［online］、［平成１９年５月１１日検索］、インターネット＜ＵＲＬ：http://itpro.nikkeibp.co.jp/as/bsc/index.html＞
【非特許文献３】「革新的アルゴリズムでデータベースのボトルネックを解消」、アイティメディア株式会社、［online］、［平成１９年５月１１日検索］、インターネット＜ＵＲＬ：http://www.atmarkit.co.jp/ad/fujitsu_bsc/0602ohpa/ohpa.html＞
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明は、前述した従来の事情に鑑みてなされたものであり、その課題は、メモリを無駄に消費することなく、ＦＡＳＴ形式データに対して主キーを設定できるようにすることにある。
【課題を解決するための手段】
【００１１】
上記の課題を解決するために案出されたデータ管理プログラムは、コンピュータを、所定の指示を操作者から受け付けると、幾つかのフィールドにそれぞれ属性値を格納したレコードを複数有するテーブル形式データを、コンパイルして、バリューリストとバリュー番号リストとからなる属性セットを上記フィールドと同数だけ含むＦＡＳＴ形式データを、メモリ上に展開するコンパイル手段、テーブル形式データの各レコードが有する複数のフィールドにそれぞれ対応する複数の属性の中から選択された一つの属性を指定する情報を、操作者から受け付ける主キー対象受付手段、ＦＡＳＴ形式データにおける主キー対象受付手段が受け付けた情報により指定される属性に対応する属性セットにおいて、バリューリストとバリュー番号リストの行数が一致するか否かを判別する判別手段、及び、その判別手段がバリューリストとバリュー番号リストの行数が一致すると判別した場合に、そのバリュー番号リストを、その属性セットが主キーであることを示すキー情報のみからなるリストに書き換える書換手段として機能させることを、特徴としている。
【００１２】
このように構成されると、コンピュータは、メモリ上にＦＡＳＴ形式データを展開した後、テーブル形式データの各レコードが有する複数のフィールドにそれぞれ対応する属性のうち、何れかの属性が操作者によって指定されると、その属性の属性値が、各レコードを識別することを可能にする一意性を有しているか否かを、バリューリストとバリュー番号リストの行数の一致性に基づいて判断し、その属性の属性値が、各レコードを識別することを可能にする一意性を有していた場合に、その属性セットのバリュー番号リストを、その属性セットが主キーであることを示すキー情報のみからなるリストに書き換えるよう、動作する。
【００１３】
これにより、属性値として連続的な値を複数格納したバリューリストとそれら属性値のバリュー番号を格納したバリュー番号リストとからなる属性セットを、主キーとして、ＦＡＳＴ形式データに追加せずとも、ＦＡＳＴ形式データがもともと有している何れかの属性セットを、主キーとして設定することができることとなり、然も、ＦＡＳＴ形式データによるメモリの消費量を減らすことができる。
【発明の効果】
【００１４】
従って、本発明によれば、メモリを無駄に消費することなく、ＦＡＳＴ形式データに対して主キーを設定できるようになる。
【発明を実施するための最良の形態】
【００１５】
以下に、本発明を実施するための最良の形態について、添付図面を参照しながら、詳細に説明する。
【００１６】
図１は、本実施形態のデータベースシステム１０の構成図である。
【００１７】
本実施形態のデータベースシステム１０は、データベース機能が付加された一般的なパーソナルコンピュータである。従って、このデータベースシステム１０は、液晶ディスプレイ等の表示ユニット１０ａ、キーボードやマウス等の入力ユニット１０ｂ、及び、これらユニット１０ａ、１０ｂに接続された本体とからなる。また、その本体は、少なくとも、ストレージユニット１０ｃ、ＣＰＵ［Central Processing Unit］１０ｄ、及び、メモリユニット１０ｅを、内蔵している。このうち、ストレージユニット１０ｃは、各種のプログラムや各種のデータを記録しておくためのユニットである。ＣＰＵ１０ｄは、ストレージユニット１０ｃ内のプログラムに従って処理を実行するユニットである。メモリユニット１０ｅは、ＣＰＵ１０ｄが実行プログラムをキャッシュしたり作業領域を展開したりするためのユニットである。また、このデータベースシステム１０は、ストレージユニット１０ｃに、テーブル形式データ１１、及び、データベースソフトウエア１２を、記憶している。
【００１８】
図２は、テーブル形式データ１１の一例として、「社員コード」、「名前」及び「年齢」の各フィールドを有するレコードからなるデータを、示している。
【００１９】
テーブル形式データ１１は、一般的なデータベース機能が取り扱うことのできるテーブル形式のデータ構造を有するデータである。すなわち、図２に例示したように、テーブル形式データ１１は、複数のレコードから構成され、各レコードは、幾つかのフィールドを有している。
【００２０】
データベースソフトウエア１２は、データベース機能をパーソナルコンピュータに付加するためのソフトウエアである。ここで、本実施形態のデータベースソフトウエア１２は、オンメモリデータベース機能を実現するソフトウエアとなっている。なお、オンメモリデータベース機能は、ストレージユニット１０ｃ内のテーブル形式データ１１に対してアクセスすることによりデータの追加、変更、削除を行うものではなく、テーブル形式データ１１をＦＡＳＴ［Filter Array Structure］形式データ１３に変換（コンパイル）してメモリユニット１０ｅ上に展開し、そのメモリユニット１０ｅ上のＦＡＳＴ形式データ１３に対して情報処理を行うものである。このため、本実施形態のデータベースソフトウエア１２は、コンパイルエンジン１２ａを含んでいる。
【００２１】
図３は、図２で例示したテーブル形式データ１１をコンパイルすることにより生成されたＦＡＳＴ形式データ１３のデータ構造を模式的に示す図である。
【００２２】
図３に示すように、ＦＡＳＴ形式データ１３は、ルート番号リスト１３ａを１つ含むとともに、バリューリスト１３ｂ及びバリュー番号リスト１３ｃからなる属性セットを幾つか含んでいる。ルート番号リスト１３ａは、図２のテーブル形式データ１１を構成する各レコードを識別するための一意な番号（ルート番号）を格納しているリストである。バリューリスト１３ｂ及びバリュー番号リスト１３ｃの属性セットは、テーブル形式データ１１の各レコードが有するフィールドと同数存在する。図３では、図２における「社員コード」、「名前」及び「年齢」の３つのフィールドに対応して、バリューリスト１３ｂ及びバリュー番号リスト１３ｃの属性セットが、３組示されている。バリューリスト１３ｂは、テーブル形式データ１１の全レコードにおける対応するフィールドに含まれている全ての属性値を昇順に格納しているリストである。なお、このバリューリスト１３ｂ内の全属性値には、その順番の番号がバリュー番号として定義される。バリュー番号リスト１３ｃは、テーブル形式データ１１の全レコードがそのフィールドに有している属性値にそれぞれ対応するバリュー番号をルート番号の順に格納しているリストである。
【００２３】
また、図１のデータベースソフトウエア１２は、このようなＦＡＳＴ形式データ１３を生成するコンパイルエンジン１２ａの他に、データ編集モジュールプログラム１２ｂを含んでいる。このデータ編集モジュールプログラム１２ｂは、オンメモリデータベース機能により管理されるＦＡＳＴ形式データ１３に対し、レコードの追加、変更、削除に相当する情報処理を行うためのものである。このデータ編集モジュールプログラム１２ｂは、入力ユニット１０ｂを通じて操作者から実行指示がなされたことを契機として、ＣＰＵ１０ｄにより、起動される。
【００２４】
図４は、データ編集モジュールプログラム１２ｂによる処理の流れを示す図である。
【００２５】
処理開始後、最初のステップＳ１０１では、ＣＰＵ１０ｄは、操作者から、入力ユニット１０ｂを通じて、何れかのテーブル形式データ１１の指定を、受け付ける。具体的には、ＣＰＵ１０ｄは、図示せぬ選択画面を表示ユニット１０ａに表示し、その図示せぬ選択画面内のＯＫボタンがクリックされた時にテキストボックスに入力されていたパス情報により、テーブル形式データ１１の指定を受け付ける。
【００２６】
次のステップＳ１０２では、ＣＰＵ１０ｄは、コンパイルエンジン１２ａを通じて、指定されたテーブル形式データ１１（例えば図２）をＦＡＳＴ形式データ１３（例えば図３）に変換（コンパイル）して、メモリユニット１０ｅに展開する。この展開の方法については、周知技術であるので、説明は省略する。
【００２７】
なお、このステップＳ１０２を実行するＣＰＵ１０ｄは、前述したコンパイル手段に相当している。
【００２８】
次のステップＳ１０３では、ＣＰＵ１０ｄは、図示せぬメニュー画面を表示ユニット１０ａに表示する。なお、図示せぬメニュー画面は、各種の操作の実行を指示するための幾つかのボタンを、含んでいる。これら幾つかのボタンには、主キーとすべき属性（バリューリスト１３ｂ及びバリュー番号リスト１３ｃからなる属性セット）を選択する操作である「主キー属性設定」、主キーに設定される属性を変更する操作である「主キー属性変更」、テーブル形式データ１１に対するレコードの追加に相当する操作である「行追加」、及び、その他の操作を行うためのものが含まれている。
【００２９】
次のステップＳ１０４では、ＣＰＵ１０ｄは、ステップＳ１０３で表示した図示せぬメニュー画面における何れかのボタンを通じて、指示を受け付けるまで、待機する。そして、何れかの指示を受け付けると、ＣＰＵ１０ｄは、ステップＳ１０５へ処理を進める。
【００３０】
ステップＳ１０５では、ＣＰＵ１０ｄは、ステップＳ１０４で何れの指示を受け付けたかを、判別する。そして、ＣＰＵ１０ｄは、「主キー属性設定」の指示を受け付けた場合には、ステップＳ１０５からステップＳ１０６へ処理を分岐させる。
【００３１】
ステップＳ１０６では、ＣＰＵ１０ｄは、主キー属性設定サブルーチンを実行する。
【００３２】
図５は、主キー属性設定サブルーチンによる処理の流れを示す図である。
【００３３】
主キー属性設定サブルーチンの開始後、ＣＰＵ１０ｄは、第１の処理ループＬ１を実行する。第１の処理ループＬ１では、ＣＰＵ１０ｄは、メモリユニット１０ｅに展開中の全ての属性（バリューリスト１３ｂ及びバリュー番号リスト１３ｃからなる属性セット）について、順に、ステップＳ２０１乃至Ｓ２１１からなる処理を、実行する。
【００３４】
ステップＳ２０１では、ＣＰＵ１０ｄは、設定画面を表示ユニット１０ａに表示する。図６は、設定画面２１の一例を示す図である。図６に示すように、設定画面２１は、属性の名称が表示されるテキストボックス２１ａ、及び、テキストボックス２１ａに名称が表示された属性を主キーとして設定すべき時にチェックマークが入力されるチェックボックス２１ｂを、含んでいる。また、設定画面２１は、設定操作を終えるときにクリックされるＯＫボタン２１ｃも、含んでいる。ＣＰＵ１０ｄは、図６に示すような設定画面２１を表示ユニット１０ａに表示したのち、図５のステップＳ２０２へ処理を進める。
【００３５】
ステップＳ２０２では、ＣＰＵ１０ｄは、設定画面２１のＯＫボタン２１ｃがクリックされるまで、待機する。そして、ＯＫボタン２１ｃがクリックされると、ＣＰＵ１０ｄは、ステップＳ２０３へ処理を進める。
【００３６】
なお、ステップＳ２０１及びＳ２０２を実行するＣＰＵ１０ｄは、前述した主キー対象受付手段に相当している。
【００３７】
ステップＳ２０３では、ＣＰＵ１０ｄは、ＯＫボタン２１ｃがクリックされたときにチェックボックス２１ｂにチェックマークが入力されていたか否かを、判別する。そして、ＯＫボタン２１ｃがクリックされたときにチェックボックス２１ｂにチェックマークが入力されていなかった場合、ＣＰＵ１０ｄは、ステップＳ２０３から処理を分岐させ、第１の処理ループＬ１におけるこの処理対象属性に対する処理を終了する。一方、ＯＫボタン２１ｃがクリックされたときにチェックボックス２１ｂにチェックマークが入力されていた場合、ＣＰＵ１０ｄは、ステップＳ２０４へ処理を進める。
【００３８】
ステップＳ２０４では、ＣＰＵ１０ｄは、既に主キーとして設定されている属性が存在するか否かを、判別する。具体的には、ＣＰＵ１０ｄは、後の説明で利用する図７に示すようにバリュー番号リスト１３ｃの０行目に「ＯＮ」が記録されている属性が存在しているか否かを、判別する。そして、既に主キーとして設定されている属性が存在していなかった場合、ＣＰＵ１０ｄは、ステップＳ２０４からステップＳ２０８へ処理を分岐させる。一方、既に主キーとして設定されている属性が存在していた場合、ＣＰＵ１０ｄは、ステップＳ２０５へ処理を進める。
【００３９】
ステップＳ２０５では、ＣＰＵ１０ｄは、図示せぬ照会画面を表示ユニット１０ａに表示する。この図示せぬ照会画面は、主キーとして設定されている属性が既に存在しているにも拘わらず処理対象属性を主キーとして設定してもよいか否かを問い合わせる旨、及び、可否を受け付けるための一対のボタンを、含んでいる。
【００４０】
次のステップＳ２０６では、ＣＰＵ１０ｄは、図示せぬ照会画面内の一対のボタンのうちの何れかがクリックされるまで、待機する。そして、何れかのボタンがクリックされると、ＣＰＵ１０ｄは、ステップＳ２０７へ処理を進める。
【００４１】
ステップＳ２０７では、ＣＰＵ１０ｄは、図示せぬ照会画面におけるクリックされたボタンが、処理対象属性を主キーとして設定することを指示するボタンであったか否かを、判別する。そして、クリックされたボタンが、処理対象属性を主キーとして設定することを取り止めるためのボタンであった場合、ＣＰＵ１０ｄは、第１の処理ループＬ１におけるこの処理対象属性に対する処理を終了する。一方、クリックされたボタンが、処理対象属性を主キーとして設定することを指示するためのボタンであった場合、ＣＰＵ１０ｄは、ステップＳ２０７からステップＳ２０８へ処理を分岐させる。
【００４２】
ステップＳ２０８では、ＣＰＵ１０ｄは、処理対象属性のバリューリスト１３ｂとバリュー番号リスト１３ｃの行数を比較する。なお、この比較処理は、図２のテーブル形式データ１１の全レコードにおける処理対象属性に対応するフィールドに含まれる全ての属性値の中から互いに重複する属性値を検索する処理に、相当している。
【００４３】
次のステップＳ２０９では、ＣＰＵ１０ｄは、ステップＳ２０８での比較の結果、処理対象属性のバリューリスト１３ｂとバリュー番号リスト１３ｃの行数が一致したか否かを、判別する。そして、行数が一致していなかった場合（重複する属性値が検出できた場合に相当）、ＣＰＵ１０ｄは、ステップＳ２０９から処理を分岐させ、第１の処理ループＬ１におけるこの処理対象属性に対する処理を終了する。一方、行数が一致した場合、ＣＰＵ１０ｄは、ステップＳ２１０へ処理を進める。
【００４４】
なお、ステップＳ２０８及びＳ２０９を実行するＣＰＵ１０ｄは、前述した判別手段に相当している。
【００４５】
ステップＳ２１０では、ＣＰＵ１０ｄは、既に主キーとして設定されている属性のバリュー番号リスト１３ｃを復元する。すなわち、ＣＰＵ１０ｄは、バリュー番号リスト１３ｃの各行に記録すべきバリュー番号を復元して、バリュー番号リスト１３ｃの各行に記録する。
【００４６】
次のステップＳ２１１では、ＣＰＵ１０ｄは、処理対象属性を主キーに設定する処理を行う。図７は、図３の「社員コード」属性を主キーに設定したあとの状態を示す図である。図７に示すように、主キーの設定後、処理対象属性のバリュー番号リスト１３ｃの各行のバリュー番号が削除され、０行目に「ＯＮ」が記録される。なお、バリュー番号リスト１３ｃの０行目に「ＯＮ」が記録された属性は、主キーとして利用されることとなる。ＣＰＵ１０ｄは、このようにして処理対象属性に主キーを設定した後、第１の処理ループＬ１におけるこの処理対象属性に対する処理を終了する。
【００４７】
なお、ステップＳ２１１を実行するＣＰＵ１０ｄは、前述した書換手段に相当している。
【００４８】
ＣＰＵ１０ｄは、全ての属性について、ステップＳ２０１乃至Ｓ２１１からなる処理を実行し終えると、第１の処理ループＬ１から離脱し、図５に係る主キー属性設定サブルーチンを終了し、図４のステップＳ１０３へ処理を戻す。
【００４９】
また、ステップＳ１０５において、「主キー属性変更」の指示を受け付けた場合には、ＣＰＵ１０ｄは、ステップＳ１０５からステップＳ１０７へ処理を分岐させる。
【００５０】
ステップＳ１０７では、ＣＰＵ１０ｄは、主キー属性変更サブルーチンを実行する。
【００５１】
図８は、主キー属性変更サブルーチンによる処理の流れを示す図である。
【００５２】
主キー属性変更サブルーチンの開始後、最初のステップＳ３０１では、ＣＰＵ１０ｄは、図示せぬ属性選択画面を表示ユニット１０ａに表示する。なお、この図示せぬ属性選択画面には、メモリユニット１０ｅに展開中のＦＡＳＴ形式データ１３におけるバリューリスト１３ｂ及びバリュー番号リスト１３ｃからなる属性セットにより特定される属性の名称が、選択自在に記述されている。また、図示せぬ属性選択画面は、何れかの属性の選択が済んだときにクリックすべきＯＫボタンを、含んでいる。
【００５３】
次のステップＳ３０２では、ＣＰＵ１０ｄは、図示せぬ属性選択画面内のＯＫボタンがクリックされるまで、待機する。そして、ＯＫボタンがクリックされると、ＣＰＵ１０ｄは、ステップＳ３０３へ処理を進める。
【００５４】
ステップＳ３０３では、ＣＰＵ１０ｄは、この時点で主キーが設定されている属性を、特定する。具体的には、ＣＰＵ１０ｄは、ＦＡＳＴ形式データ１３において、バリュー番号リスト１３ｃの０行目に「ＯＮ」が記録されている属性を、特定する。
【００５５】
次のステップＳ３０４では、ＣＰＵ１０ｄは、ステップＳ３０２でＯＫボタンがクリックされたときに選択されていた属性と、ステップＳ３０３で特定された属性とが一致するか否かを、判別する。そして、属性同士が一致した場合、ＣＰＵ１０ｄは、ステップＳ３０４から処理を分岐させ、図８に係る主キー属性変更サブルーチンを終了し、図４のステップＳ１０３へ処理を戻す。一方、属性同士が一致しなかった場合、ＣＰＵ１０ｄは、ステップＳ３０５へ処理を進める。
【００５６】
ステップＳ３０５では、ＣＰＵ１０ｄは、ステップＳ３０２でＯＫボタンがクリックされたときに選択されていた属性のバリューリスト１３ｂとバリュー番号リスト１３ｃの行数を比較する。なお、この比較処理は、図２のテーブル形式データ１１の全レコードにおける当該属性に対応するフィールドに含まれる全ての属性値の中から互いに重複する属性値を検索する処理に、相当している。
【００５７】
次のステップＳ３０６では、ＣＰＵ１０ｄは、選択された属性のバリューリスト１３ｂとバリュー番号リスト１３ｃの行数が一致するか否かを、判別する。そして、行数が一致しなかった場合（重複する属性値が検出できた場合に相当）、ＣＰＵ１０ｄは、ステップＳ３０６から処理を分岐させ、図８に係る主キー属性変更サブルーチンを終了し、図４のステップＳ１０３へ処理を戻す。一方、行数が一致した場合、ＣＰＵ１０ｄは、ステップＳ３０７へ処理を進める。
【００５８】
ステップＳ３０７では、ＣＰＵ１０ｄは、既に主キーとして設定されている属性のバリュー番号リスト１３ｃを復元する。すなわち、ＣＰＵ１０ｄは、バリュー番号リスト１３ｃの各行に記録すべきバリュー番号を復元して、バリュー番号リスト１３ｃの各行に記録する。
【００５９】
次のステップＳ３０８では、ＣＰＵ１０ｄは、選択された属性を主キーに切り替える処理を行う。図９は、図３において主キーを「社員コード」属性から「名前」属性に変更したあとの状態を示す図である。図９に示すように、主キーの変更後、選択された属性のバリュー番号リスト１３ｃの各行のバリュー番号が削除され、０行目に「ＯＮ」が記録される。また、もともと主キーが設定されていた属性のバリュー番号リスト１３ｃは、０行目の「ＯＮ」が削除され、全ての行のバリュー番号が復元される。ＣＰＵ１０ｄは、このようにして主キーの設定先を切り替えた後、図８に係る主キー属性変更サブルーチンを終了し、図４のステップＳ１０３へ処理を戻す。
【００６０】
また、ステップＳ１０５において、「行追加」の指示を受け付けた場合には、ＣＰＵ１０ｄは、ステップＳ１０５からステップＳ１０８へ処理を分岐させる。
【００６１】
ステップＳ１０８では、ＣＰＵ１０ｄは、行追加サブルーチンを実行する。
【００６２】
図１０は、行追加サブルーチンによる処理の流れを示す図である。
【００６３】
行追加サブルーチンの開始後、最初のステップＳ４０１では、ＣＰＵ１０ｄは、図示せぬ追加情報入力画面を表示ユニット１０ａに表示する。なお、この図示せぬ追加情報入力画面は、テーブル形式データ１１に追加すべきレコードに相当する情報を入力するための画面であり、幾つかの属性値を入力するためのテキストボックスを含んでいる。また、この図示せぬ追加情報入力画面は、各属性値のテキストボックスへの入力が済んだときにクリックされるＯＫボタンを、含んでいる。
【００６４】
次のステップＳ４０２では、ＣＰＵ１０ｄは、図示せぬ追加情報入力画面内のＯＫボタンがクリックされるまで、待機する。そして、ＯＫボタンがクリックされると、ＣＰＵ１０ｄは、ステップＳ４０３へ処理を進める。
【００６５】
ステップＳ４０３では、ＣＰＵ１０ｄは、この時点で主キーが設定されている属性を、特定する。具体的には、ＣＰＵ１０ｄは、ＦＡＳＴ形式データ１３において、バリュー番号リスト１３ｃの０行目に「ＯＮ」が記録されている属性を、特定する。
【００６６】
次のステップＳ４０４では、ＣＰＵ１０ｄは、ステップＳ４０２でＯＫボタンがクリックされたときに図示せぬ追加情報入力画面に入力されていた幾つかの属性値のうち、ステップＳ４０３で特定した属性の属性値を検索条件として、当該属性のバリューリスト１３ｂを検索する。
【００６７】
次のステップＳ４０５では、ＣＰＵ１０ｄは、ステップＳ４０４の検索の結果、当該属性のバリューリスト１３ｂから検索条件に合致する属性値が検出できたか否かを、判別する。そして、検索条件に合致する属性値が検出できた場合、ＣＰＵ１０ｄは、ステップＳ４０５から処理を分岐して、図１０に係る行追加サブルーチンを終了し、図４にステップＳ１０３へ処理を戻す。一方、検索条件に合致する属性値が検出できなかった場合、ＣＰＵ１０ｄは、ステップＳ４０６へ処理を進める。
【００６８】
ステップＳ４０６では、ＣＰＵ１０ｄは、ステップＳ４０２でＯＫボタンがクリックされたときに図示せぬ追加情報入力画面に入力されていた幾つかの属性値を、メモリユニット１０ｅ上のＦＡＳＴ形式データ１３に追加する処理を行う。図１１は、社員コードが00007、名前が原田俊夫、年齢が３２歳である情報を、図７のＦＡＳＴ形式データ１３に追加した例を、示している。図１１に示すように、「社員コード」属性のバリュー番号リスト１３ｃの０行目に「ＯＮ」が記録されているため、「社員コード」属性が主キーとなっている。そして、「社員コード」属性のバリューリスト１３ｂに、新たな「00007」という属性値が追加されている。また、「名前」属性のバリューリスト１３ｂには、新たな「原田俊夫」という属性値が追加され、このバリューリスト１３ｂ内の属性値は、昇順に並べ替えられ、バリュー番号リスト１３ｃでは、この並べ替えに応じてバリュー番号が変更されている。また、「年齢」属性のバリューリスト１３ｂにも、新たな「３２」という属性値が追加され、このバリューリスト１３ｂ内の属性値は、昇順に並べ替えられ、バリュー番号リスト１３ｃでは、この並べ替えに応じてバリュー番号が変更されている。ＣＰＵ１０ｄは、このようにして追加情報をＦＡＳＴ形式データ１３に反映した後、図１０に係る行追加サブルーチンを終了し、図４にステップＳ１０３へ処理を戻す。
【００６９】
また、ステップＳ１０５において、その他の指示を受け付けた場合には、ＣＰＵ１０ｄは、ステップＳ１０５からステップＳ１０９へ処理を分岐させる。
【００７０】
ステップＳ１０９では、ＣＰＵ１０ｄは、その他の指示に応じた処理を実行し、その後、図４にステップＳ１０３へ処理を戻す。
【００７１】
また、ステップＳ１０５において、終了指示を受け付けた場合、ＣＰＵ１０ｄは、図４に係る処理を終了する。
【００７２】
以上に説明したようなデータ編集モジュールプログラム１２ｂによれば、データベースシステム１０は、メモリユニット１０ｅ上にＦＡＳＴ形式データ１３を展開した後、テーブル形式データ１１の各レコードが有する複数のフィールドにそれぞれ対応する属性のうち、何れかの属性が操作者によって指定されたときに、その属性の属性値が、各レコードを識別することを可能にする一意性を有しているか否かを、バリューリスト１３ｂとバリュー番号リスト１３ｃの行数の一致性に基づいて判断する（ステップＳ２０８、Ｓ２０９）。そして、このデータベースシステム１０は、その属性の属性値が、各レコードを識別することを可能にする一意性を有していた場合に、その属性セットのバリュー番号リスト１３ｃを、その属性セットが主キーであることを示す「ＯＮ」というキー情報を０行目にのみ有するリストに書き換える（ステップＳ２１１）。
【００７３】
これにより、属性値として連続的な値が複数格納されたバリューリストとそれら属性値のバリュー番号を複数格納したバリュー番号リストとからなる属性セットを、主キーとして、ＦＡＳＴ形式データ１３に追加せずとも、ＦＡＳＴ形式データ１３がもともと有している何れかの属性セットを、主キーとして設定することができることとなり、然も、ＦＡＳＴ形式データ１３によるメモリの消費量を減らすことができる。
【００７４】
また、バリュー番号リストを、「ＯＮ」というキー情報を０行目にのみ有するリストにしたり、バリュー番号を各行に昇順に格納したリストにしたりすることにより、主キーとして設定する属性セットを容易に切り替えることができる（ステップＳ１０７、Ｓ３０１〜Ｓ３０８）。
【００７５】
さらに、前述したように、本実施形態によれば、テーブル形式データ１１に対するレコードの追加に相当する操作を行う場合に、その追加される複数の属性値のうち、主キーに設定されている属性の属性値が、その属性セットのバリューリスト１３ｂ内の属性値と重複するときには、それら複数の属性値がＦＡＳＴ形式データ１３に追加されないようになっている（ステップＳ１０８、Ｓ４０１〜Ｓ４０６）。このため、レコードの追加に相当する操作によって、主キーとして設定された属性セットが有すべき属性値の一意性が、破綻することがない。
【図面の簡単な説明】
【００７６】
【図１】本実施形態のデータベースシステムの構成図
【図２】テーブル形式データのデータ構造の一例を模式的に示す図
【図３】ＦＡＳＴ形式データのデータ構造を模式的に示す図
【図４】データ編集モジュールプログラムによる処理の流れを示す図
【図５】主キー属性設定サブルーチンによる処理の流れを示す図
【図６】設定画面の一例を示す図
【図７】図３の「社員コード」属性を主キーに設定したあとの状態を示す図
【図８】主キー属性変更サブルーチンによる処理の流れを示す図
【図９】図３において主キーを「社員コード」属性から「名前」属性に変更したあとの状態を示す図
【図１０】行追加サブルーチンによる処理の流れを示す図
【図１１】社員コードが00007、名前が原田俊夫、年齢が３２歳である情報を、図７のＦＡＳＴ形式データに追加した例を示す図
【符号の説明】
【００７７】
１０    データベースシステム
１０ａ  表示ユニット
１０ｂ  入力ユニット
１０ｃ  ストレージユニット
１０ｄ  ＣＰＵ
１０ｅ  メモリユニット
１１    テーブル形式データ
１２    データベースソフトウエア
１２ａ  コンパイルエンジン
１２ｂ  データ編集モジュールプログラム
１３    ＦＡＳＴ形式データ
１３ａ  ルート番号リスト
１３ｂ  バリューリスト
１３ｃ  バリュー番号リスト
【図１】
2008305080.tif 000003
【図２】
2008305080.tif 000004
【図３】
2008305080.tif 000005
【図４】
2008305080.tif 000006
【図５】
2008305080.tif 000007
【図６】
2008305080.tif 000008
【図７】
2008305080.tif 000009
【図８】
2008305080.tif 000010
【図９】
2008305080.tif 000011
【図１０】
2008305080.tif 000012
【図１１】
2008305080.tif 000013