(57)【要約】【課題】概念テーブルにある複合データのさまざまな態様を実行する方法、システム、およびコンピュータ読取可能媒体によって、テーブル形式の複合データを、概念テーブルに追加すること。【解決手段】概念テーブルは、少なくとも複合データ型を含むテーブルである。複合データ型は、「グループ化」されて単一の新しいデータ型を形成する１または複数のスカラ列および／または他の複合型である。まず、信号を受信し、複合データ型をテーブルに追加する。１または複数のデータテーブルが作成される。さらに、１または複数のデータテーブルへのリンクが概念テーブルに作成される。この複合データは、複数のデータテーブルのスカラ値にマッピングできる。複合データは、データモデリング法によって入力され、カーソリング法によってアクセスされ、クエリ拡張法によってクエリを行ってもよい。【選択図】図１
2006172446.tif 000002
【特許請求の範囲】
【請求項１】
概念テーブルに複合データを追加するコンピュータ実施方法であって、
前記概念テーブルに複合データを追加する信号を受信するステップと、
１または複数のデータテーブルを作成するステップと、
前記１または複数のデータテーブルへのリンクを作成するステップと
を有することを特徴とするコンピュータ実施方法。
【請求項２】
前記複合データは、データテーブルを含むことを特徴とする請求項１に記載のコンピュータ実施方法。
【請求項３】
前記複合データは、概念テーブルを含むことを特徴とする請求項１に記載のコンピュータ実施方法。
【請求項４】
請求項１に記載のコンピュータ実施方法であって、前記概念テーブルのデータをモデル化するステップをさらに有し、前記データのモデル化するステップは、
１または複数のデータ値を格納する信号を受信するステップと、
前記概念テーブルの構造を分析するステップと、
１または複数のデータテーブルへの１または複数のマッピングを判定するステップと、
前記１または複数のデータテーブルにデータを格納するステップと
を含むことを特徴とする前記コンピュータ実施方法。
【請求項５】
請求項１に記載のコンピュータ実施方法であって、さらに前記概念テーブルのクエリを拡張するステップを有し、前記クエリを拡張するステップは、
概念テーブルのクエリを受信するステップと、
前記概念テーブルの構造を分析するステップと、
１または複数の拡張規則を前記クエリに適用するステップと、
前記クエリを発行するステップと
を含むことを特徴とする前記コンピュータ実施方法。
【請求項６】
前記クエリへの前記１または複数の拡張規則の適用を増加的に行うことを特徴とする請求項５に記載のコンピュータ実施方法。
【請求項７】
複数の前記１または複数の拡張規則を同一オペレーションで適用しても良いことを特徴とする請求項５に記載のコンピュータ実施方法。
【請求項８】
前記クエリへの前記１または複数の拡張規則の適用するステップは、
前記概念テーブルのモデルに複数のデータテーブルを組み合わせるステップと、
前記クエリを、前記概念テーブルの前記モデルへ適用するステップと
をさらに含むことを特徴とする請求項５に記載のコンピュータ実施方法。
【請求項９】
前記クエリの発行するステップは、実行のために前記クエリをデータベースサーバにサブミットするステップをさらに含むことを特徴とする請求項５に記載のコンピュータ実施方法。
【請求項１０】
前記クエリの発行するステップは、前記データベースのデータに直接アクセスするステップをさらに含むことを特徴とする請求項５に記載のコンピュータ実施方法。
【請求項１１】
請求項１に記載のコンピュータ実施方法であって、前記概念テーブルでのカーソリングするステップをさらに有し、前記カーソリングするステップは、
前記概念テーブルの複合データにアクセスする信号を受信するステップと、
前記複合データに関連する１または複数のマッピングを読み取るステップと、
前記マッピングを用いて１または複数のデータテーブルからスカラデータを検索するステップと
を含むことを特徴とする前記コンピュータ実施方法。
【請求項１２】
前記概念テーブルに前記スカラデータを表示するステップをさらに有することを特徴とする請求項１１に記載のコンピュータ実施方法。
【請求項１３】
コンピューティングシステムにアクセス可能であり、かつ請求項１に記載の方法を行うためのコンピュータプログラムを符号化することを特徴とするコンピュータ読取可能媒体。
【請求項１４】
複合データをテーブルに追加し、複合データを１または複数のデータテーブルに格納するデータモデリングモジュールと、
１または複数のデータテーブルのクエリを含む概念テーブルのクエリを拡張するクエリ拡張モジュールと、
概念テーブルの複合データを検索するカーソリングモジュールと
を備えたことを特徴とする前記概念テーブルモデル化のシステム。
【請求項１５】
前記クエリ拡張モジュールおよび前記カーソリングモジュールからの結果を表示する表示モジュールをさらに備えたことを特徴とする請求項１４に記載のシステム。
【請求項１６】
コンピューティングシステムにアクセス可能であり、かつ概念テーブルのデータをモデル化するコンピュータプログラムを符号化するコンピュータ読取可能媒体であって、
１または複数のデータ値を格納する信号を受信するステップと、
前記概念テーブルの構造を分析するステップと、
１または複数のデータテーブルへの１または複数のマッピングを判定するステップと、
前記１または複数のデータテーブルにデータを格納するステップと
を備えたことを特徴とする前記コンピュータ読取可能媒体。
【請求項１７】
請求項１６に記載のコンピュータ読取可能媒体であって、前記コンピュータプログラムは概念テーブルのクエリを拡張するステップをさらに備え、前記拡張は、
概念テーブルのクエリを受信するステップと、
前記概念テーブルの構造を分析するステップと、
前記クエリに１または複数の拡張規則を適用するステップと、
前記クエリを発行するステップと
を含むことを特徴とする前記コンピュータ読取可能媒体。
【請求項１８】
請求項１６に記載のコンピュータ読取可能媒体であり、前記コンピュータプログラムはさらに概念テーブルでのカーソリングするステップを備え、前記カーソリングするステップは、
概念テーブルの複合データにアクセスする信号を受信するステップと、
前記複合データに関連する１または複数のマッピングを読み取るステップと、
前記マッピングを用いて１または複数のデータテーブルからスカラデータを検索するステップと
を含むことを特徴とする前記コンピュータ読取可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、ソフトウェアアプリケーションに関し、より詳細には、データベース等の、データを格納し、報告するソフトウェアアプリケーションに関する。さらに詳細には、本発明の態様は、そのようなソフトウェアアプリケーションでのデータの格納、およびクエリに関する。
【背景技術】
【０００２】
膨大なデータを管理するために、スプレッドシートやデータベースアプリケーション等のコンピュータソフトウェアアプリケーションが開発され、論理的にデータを編成し、また格納してきた。通常のスプレッドシートやデータベースアプリケーションは、情報に関する多くのレコードを含み、また、この各レコードは、所定数のフィールドを備える。データベースに関しては、データベース管理システムが通常は用いられ、データベースをより簡単に操作するためのソフトウェアツールを提供する。データベース管理システムの例としては、例えば、Microsoft（登録商標） AccessやMicrosoft（登録商標） SQL Serverがある。データベースを用いれば、ユーザは、一般に、スプレッドシートでは利用できない複合データの相互関係を構築できる。このため、データベースの機能は増強されるが、その一方、データベースアプリケーションを、新規ユーザが習得するのはより難しいものとなる。
【０００３】
通常のデータベース管理システムでは、ユーザに、データを追加、修正、または消去する機能、フィルタを用いたデータをクエリする機能、およびデータベース中のレコードを報告する機能が提供される。データベース中のデータは、通常は、行と列とを用いて表される。フィールドは、行と列との交わる部分である。一般に、任意の所定のフィールドは、単一のスカラデータ値のみを含んでよい。データのクエリには、通常は、構造化クエリ言語（ＳＱＬ）等のクエリ言語形式がとられる。このようなクエリは、ローカルに保有しているデータ上で行われる場合もあるし、実行するためにデータベースサーバに実行依頼される場合もある。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
データベースは、複数の値が並んだ平板構造のテーブルではなく、階層構造のデータを含む場合もある。例えば、発行追跡アプリケーションでは、各発行は、１人または複数の人に割り当てられる。従って、ユーザは、複数のリンクテーブルを用いて、この種の階層構造をモデル化し、複数のテーブルのデータを結合する比較的複雑なクエリを用いて、このテーブルにクエリを行わなければならない。より具体的には、発行に関するテーブル、発行が割り当てられた可能性がある全ての人を含む、人に関するもう１つ別のテーブル、および発行を人に割り当てる連結テーブルがあるかもしれない。このようなテーブル階層の設定は、ユーザには面倒で紛らわしいもので、データベースアプリケーションを用いるのが初めてのユーザには、なおさらそうである。また、このような階層構造全体にわたってクエリを行うことは、複数のテーブルにわたってクエリを行うという複雑さと同様に問題があり、特に、クエリ言語に関する深い知識を持たないユーザの場合はなおさら問題がある。
【０００５】
これらの考慮事項およびその他に鑑み、本発明はなされた。
【課題を解決するための手段】
【０００６】
本発明により、コンピュータ実施方法およびコンピュータ読取可能媒体が、複合データを概念テーブルに追加するために提供される。概念テーブルは、少なくとも複合データ型を含むテーブルである。複合データ型は、「グループ化」されて単一の新しいデータ型を形成する１または複数のスカラ列および／または他の複合型である。まず、信号を受信し、複合データ型をテーブルに追加する。１または複数のデータテーブルが作成される。さらに、１または複数のデータテーブルへのリンクが概念テーブルに作成される。
【０００７】
他の態様によれば、本発明は、概念テーブルのデータをモデル化するコンピュータ実施方法およびコンピュータ読取可能媒体に関する。まず、１または複数のデータ値を格納する信号を受信する。この概念テーブルの構造が分析され、１または複数のデータテーブルへの１または複数のマッピングが判定される。最後に、データは、１または複数のデータテーブルに格納される。
【０００８】
さらに他の態様によれば、本発明は、概念テーブルのクエリを拡張するコンピュータ実施方法およびコンピュータ読取可能媒体に関する。まず、概念テーブルのクエリを受信する。次に、概念テーブルの構造が分析され、１または複数の拡張規則が、クエリに適用される。最後に、拡張したクエリが発行される。
【０００９】
さらに他の態様によれば、本発明は、概念テーブルでカーソリングを行うコンピュータ実施方法およびコンピュータ読取可能媒体に関する。まず、概念テーブルの複合データにアクセスする信号を受信する。この複合データに関連する１または複数のマッピングが読み取られる。最後に、このマッピングを用いて、１または複数のデータテーブルからのスカラデータが読み取られる。
【００１０】
さらに他の態様によれば、本発明は、概念テーブルモデル化のためのシステムに関する。データモデリングモジュールは、複合データをこのテーブルに追加し、複合データを１または複数のデータテーブルに格納する。クエリ拡張モジュールは、概念テーブルのクエリを拡張して１または複数のデータテーブルのクエリを含む。カーソリングモジュールは、概念テーブルの複合データを検索する。
【００１１】
本発明は、コンピュータ処理、コンピューティングシステム、あるいは、コンピュータプログラム製品またはコンピュータ読取可能媒体などの製品として実施してもよい。このコンピュータ読取可能媒体は、コンピュータシステムが読むことができ、かつコンピュータ処理を実行するための命令からなるコンピュータプログラムを符号化するコンピュータストレージ媒体であってもよい。コンピュータプログラム読取可能媒体もまた、コンピューティングシステムが読むことができ、かつコンピュータ処理を実行するための命令からなるコンピュータプログラムを符号化するキャリア上の伝播信号であってもよい。
【００１２】
本発明を特徴付けるこれらの、および様々な他の特徴および利点は、以下の詳細な記述を解釈し、添付図面を検討することで明らかになろう。
【発明を実施するための最良の形態】
【００１３】
図１は、データベース管理システム内の製品オーダデータベースのテーブル１０２を示すスクリーンショットである。このテーブル１０２には、複数の行と列のデータからなるテーブルが含まれる。各データ列は、一般的には、データレコードを有する。また、データベースの各データ列は、一般的には、同種のデータ要素を含むとみなすことができる。例えば、注文ＩＤ列１０４は、数値形式のデータ要素を含み、顧客列１０６は、英数字文字列形式のデータを含み、注文日付列１０８は、日付形式のデータを含むという具合である。単一レコードに対する注文ＩＤ列は、そのレコードの注文ＩＤフィールドに対応する。このようにフィールドが集合して、列を構成する。当業者には当然のことながら、多くの他の種類のデータをデータベースに保存でき、さらに、データベース管理システム内のテーブルを用いて表示できる。本発明によって、データの複合的な階層構造を、簡単なデータベーステーブル（見た目はデータベーステーブル１０２と似ているが、構造的には異なる）の概念化によってモデル化でき、その結果、複数のテーブルにわたる複雑なクエリを作り、さらに複数のテーブル間を前にいったり、後ろにいったりしてデータを見る、操作するという煩わしい操作からユーザを解放する。
【００１４】
本発明は、コンピュータシステムとして実施されることから、図２に、本発明の実施形態を実施できる適切なコンピューティングシステム環境の例を示す。このシステムの最も基本的な構成では、システム２００は、少なくとも処理装置２０２とメモリ２０４とを備える。その構成とその種のコンピューティング装置では、メモリ２０４は揮発性（ＲＡＭ等）であってもよいし、不揮発性（ＲＯＭ、フラッシュメモリ等）であってもよいし、あるいはそれら２つの組合せであってもよい。この最も基本的な構成を、図２に破線２０６で示す。
【００１５】
このメモリ２０４に加えて、システムは、少なくとも１つの他の形式のコンピュータ読取可能媒体を含んでもよい。コンピュータ読取可能媒体は、システム２００がアクセスできる、入手可能なあらゆる媒体であることができる。限定するわけではないが、一例としては、コンピュータ読取可能媒体は、コンピュータ記憶装置媒体と通信媒体とを備えてもよい。
【００１６】
コンピュータストレージ媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、あるいはその他のデータ等の情報を格納するためのあらゆる方法または技術で実施する揮発性および不揮発性であって、取り外し可能および取り外し不可能な媒体が含まれる。メモリ２０４、取り外し可能な記憶装置２０８、および取り外し不可能な記憶装置２１０は、全て、コンピュータ記憶装置媒体の例である。このコンピュータ記憶装置媒体には、限定するわけではないが、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、または他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、または他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、または他の磁気記憶装置、あるいは、所望の情報を格納するために用いることができ、かつシステム２００がアクセスできる他のあらゆる媒体が含まれる。このようなコンピュータ記憶装置媒体のいずれがシステム２００の一部であってもよい。
【００１７】
システム２００は、また、このシステムが他の装置と通信するのを可能にする通信接続部２１２を含んでもよい。この通信接続部２１２は、通信媒体の一例である。通常、通信媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、あるいは他のデータを、搬送波あるいは他のトランスポート機構等の変調データ信号を具現し、さらに、あらゆる情報配信媒体を含む。「変調データ信号」という用語は、信号中の情報を符号化する方法で設定または変換した１または複数の特性を有する信号を意味する。限定するわけではないが、一例としては、通信媒体には、有線ネットワークや直接配線接続等の有線媒体、および音声、ＲＦ、赤外線、他の無線媒体等の無線媒体が含まれる。本明細書で用いるコンピュータ読取可能媒体という用語は、記憶媒体および通信媒体のいずれも含む。
【００１８】
ある実施形態によれば、このシステム２００は、入力装置２１４および／または出力装置２１６等の周辺装置を含む。例示的な入力装置２１４としては、限定するわけではないが、キーボード、コンピュータマウス、ペン、またはスタイラス、音声入力装置、触覚入力装置等を含む。また、例示的な出力装置２１６としては、限定するわけではないが、ディスプレイ、スピーカ、プリンタ等を含む。本発明の目的にとって、ディスプレイは主要な出力装置である。このような装置は、当該技術ではよく知られたものであり、従って、ここでは詳細には記述しない。
【００１９】
コンピューティング環境を考慮しながら、本発明の各種実施形態を具現化するプロセスを実施するために行う論理動作を参照して、以下の図を説明する。これらの論理動作は、（１）コンピュータが実施する一連のステップ、あるいはコンピューティングシステム上で走るプログラムモジュールとして、および／または（２）コンピューティングシステム内の相互接続された機械論理回路、あるいは回路モジュールとして実施される。これは、本発明を実施するコンピューティングシステムの性能要件に左右される選択の問題である。従って、本明細書に記載の本発明の実施形態を構成する論理動作は、オペレーション、構造手段、アクト、あるいはモジュール等、さまざまに呼ばれる。当業者には当然のことながら、このオペレーション、構造手段、アクト、およびモジュールは、本明細書に添付の請求項に列挙されている本発明の精神と範囲から逸脱することなく、ソフトウェア、ファームウェア、特殊用途のデジタル論理、およびこれらの組合せで実施できる。
【００２０】
図３に、本発明の一実施形態によるモジュールを示す。ユーザインタフェースモジュールにより、ユーザは、データの表示、修正、クエリ、および操作を行うことができる。従って、ユーザの、データモデリングモジュール３０４、クエリ拡張モジュール３０６、カーソルモデリングモジュール３０８との対話は、ユーザインタフェースモジュール３０２を介して行う。同様に、これらのモジュール３０４、３０６、３０８からのデータは、ユーザインタフェースモジュール３０２を介して表示される。
【００２１】
ユーザインタフェース３０２は、テーブルの階層パラメータをデータモデリングモジュール３０４に渡す。さらに、データモデリングモジュール３０４からフィードバックを受信して、さらにテーブルの定義を示し、あるいはテーブルの修正を行うことでユーザをサポートすることもある。また、ユーザインタフェースモジュール３０２は、ユーザが行うクエリをクエリ拡張モジュール３０６に渡し、同様に、クエリ拡張モジュール３０６からクエリの結果を受信する。さらに、ユーザインタフェースモジュール３０２は、ユーザからのデータに関するリクエストを、データ検索のためにカーソリングモジュール３０８に渡し、同様に、検索したデータをカーソリングモジュール３０８から受信する。
【００２２】
一実施形態では、ユーザインタフェースモジュール３０２は、１または複数のモジュール３０４、３０６、３０８からの戻りデータを、ディスプレイ上に直接レンダリングする。また、代替の実施形態では、ユーザインタフェースモジュール３０２は、アプリケーションプログラムインタフェース（ＡＰＩ）を用いて表示を更新する。
【００２３】
データモデリングモジュール３０４は、概念テーブルの作成と修正とを可能にする。概念テーブルは、複合（スカラではない）データを、別のテーブル形式で含むことができると共に、複合データも含むことができるデータテーブルである。データテーブルは、通常、スカラデータのみを含み、場合によっては、数字、英数字文字列、分数等を含んでもよい。複合データは、１または複数の入れ子テーブルを含んでもよく、その入れ子テーブル自身が、さらに別のレベルの入れ子テーブルを含んでもよい。概念テーブルは、このように階層的に相関した多くのテーブルを、任意に含むことができる。従って、概念テーブル内の所定のフィールドは、別のテーブルのフィールドに完全に、物理的にマッピングしてもよい。さらに、この物理的なマッピングとその結果とは、ユーザには全く見えない。データモデリングモジュール３０４は、ユーザが概念テーブルに対して指定したパラメータを、ユーザインタフェース３０２から受信してもよい。
【００２４】
一実施形態では、概念テーブルは、スカラデータを含む１または複数のデータテーブルとして格納される。この概念テーブル内にだけ存在するスカラデータ値は、マッピングされないスカラ値に対し特に割り当てられたデータテーブルに格納される。データテーブルに物理的にマッピングする１または複数のデータ値は、そのデータテーブル３１０に物理的に格納できるように、データモデリングモジュール３０４によって「シュレッドされる」。その結果、ユーザは、単一の概念テーブルを取り扱うだけですみ、この概念テーブルを、格納のために複数の階層テーブルに変換するという複雑さはユーザには見えない。同様に、シュレッディングの実施は、必ずしも新たな複雑さをデータベースの記憶エンジンまたはデータベースのクエリプロセッサにもたらすことはない。
【００２５】
ある実施形態では、概念テーブルのデータ値は、複合列がテーブルに追加されると、適当なデータテーブルにシュレッドされる。また、代替の実施形態では、概念テーブルのデータ値は、ユーザからのセーブコマンドを受信すると、適当なデータテーブルにシュレッドされる。さらに別の実施形態では、概念テーブルのデータ値は、値の変更が検出されるたびに適当なデータテーブルにシュレッドされる。
【００２６】
クエリ拡張モジュール３０６は、ユーザインタフェースモジュール３０２から概念テーブルへのクエリを受信し、その概念テーブルの階層構造に基づき、そのクエリを拡張する。一実施形態では、クエリ拡張モジュール３０６は、その概念テーブルの階層構造に基づき、開発者が定義した一組の規則を用いてクエリを拡張する。例示的なクエリ拡張規則の一組を、下記の表１〜１２に記載する。
【００２７】
代替実施形態では、クエリ拡張モジュール３０６は、関連するデータテーブルのサブセットを、単一のデータテーブルに一緒に結合する（「ｊｏｉｎ」：データベース分野での技術用語で、結合する「ｃｏｍｂｉｎｅ」と類似）ことによってクエリを拡張し、概念テーブルへのクエリを、その単一のデータテーブルに対し実行する。別の代替実施形態では、クエリ拡張モジュール３０６は、概念テーブルがリンクする全てのデータテーブル３１０を、関連性とは無関係に、単一のデータテーブルに結合することによってクエリを拡張し、概念テーブルへのクエリを、その単一のデータテーブルに対し実行する。
【００２８】
ある実施形態では、クエリ拡張モジュール３０６は、データテーブル３１０に対し、直接、クエリを行う。代替実施形態では、クエリ拡張モジュール３０６は、拡張したクエリを、実行するためにデータベースサーバにサブミットする。この実施形態では、クエリプロセッサやデータベースサーバの変更を必ずしも必要とはしない。
【００２９】
カーソリングモジュール３０８は、概念テーブルの読み取りとナビゲーションとを可能にする。概念テーブルを開くために、ユーザインタフェース３０２を介して信号を受信すると、カーソリングモジュール３０８は、存在するデータテーブルへの全てのマッピングを分析する。このデータテーブルからスカラデータ値がマッピングを用いて検索され、検索されたスカラデータ値は、表示のため、ユーザインタフェース３０２に戻される。
【００３０】
ユーザが、データテーブルを含んだ概念テーブルのフィールドを選択すると、そのフィールドでテーブルマッピングが参照される。マッピングされたデータテーブルのスナップショットがとられ、その結果が、概念テーブルに表示される。一実施形態では、加えてマッピングした先のデータテーブルを、そのコンテンツが変化できないように編集に対してロックする。代替実施形態では、マッピングした先のデータテーブルはロックされずに、その代わり、定期的に更新がチェックされ、表示された概念テーブルに伝達される。
【００３１】
当業者には当然のことながら、図３と併せて提示した例示的実施形態は、データテーブルを含む可能性がある概念テーブルを伴ったが、請求範囲に記載の発明の範囲を逸脱することなく、適宜、多くのレベルの間接的手段を用いることができる。例えば、概念テーブルは、１または複数の概念テーブルを含んでもよく、その１または複数の概念テーブル自体も、さらに他の概念テーブルを含んでもよい。この場合、無限ループ、つまり、（直接的にせよ、間接的にせよ）それ自体を参照する概念テーブルであり、無数の間接的手段を作成しないように注意しなければならない。
【００３２】
ある実施形態では、データモデリングモジュール３０４は、データストアを原子的に行うことができる。これは、所定のいかなるデータストアの試みにおいても、データテーブルの全てが更新されるか、データテーブルは全く更新されないかのいずれかであることを意味する。同様に、データテーブルが遷移状態の間は、データの読み取りは回避されることもある。原子データテーブルへの書き込みは、セマフォ、ファイルロック、あるいは当業者には既知の他の方法によって行われてもよく、ロールバック（１または複数の保留中の書き込みを取り消すこと）を組込んでもよい。
【００３３】
図４は、本発明の一実施形態に従って、概念テーブルが作成される場合の動作フロー図である。受信動作４０２では、ユーザからの信号を受信し、複合データ型を、既存テーブルまたは概念テーブルに追加する。この信号は、ユーザインタフェースを介してユーザから、または自動コンピュータ処理や、その他の入力源から受信してもよい。この受信が、少なくともデータテーブルを作成するために、作成動作４０４を起動する。
【００３４】
作成動作４０４では、複合データと関連したいかなるスカラ値をも含むために、少なくとも１つのデータテーブルを作成する。複合データフィールドに入ったデータは、概念テーブルが格納されると、対応するデータテーブルにシュレッドされる。一実施形態では、作成された各データテーブルは、１または複数のデータベースファイルの形式をとる。他の実施形態では、生成された各データテーブルは、１または複数のデータベースファイル内でデータ構造の形式をとる。さらに他の実施形態では、作成動作４０４は、加えて１または複数のスカラ値を、各作成されたデータテーブル内でデフォルト値に初期化する。また、一実施形態では、適切なデータテーブルが既に存在していれば、作成動作４０４を省略してもよく、データテーブルは、単にリンクされるだけでよい。
【００３５】
作成動作４０４に続いてリンク動作４０６では、１または複数のリンクを、作成動作４０４で作成した１または複数のデータテーブルに対応する概念テーブルに追加する。複合データフィールドがカーソリング（図３と併せて上述し、また、図７と併せて下記で説明する）によって選択されると、リンクはデータテーブルを検索（ｌｏｃａｔｅ）するのに用いてよい。また、複合データフィールド内でスカラ値が追加され、あるいは修正されると（図３と併せて上記で説明）、リンクはデータテーブルを検索するのに用いてもよい。
【００３６】
判定動作４０８では、複合データを入れるために、追加テーブルが必要かどうかを判定する。もっと多くのテーブルが必要であれば、このフローはＹＥＳに分岐し、作成動作４０４に戻る。これ以上のテーブルが必要でなければ、フローはＮＯに分岐し、フローの終了４１０に至る。
【００３７】
いったんフローの終了４１０に至ると、複合データは、カーソリング（図３と併せて上記で、また、図７と併せて下記で説明）を用いて表示や操作が行われ、さらにシュレッディング（図３と併せて上述し、また、図５と併せて下記で説明する）によって、格納されてもよい。
【００３８】
一実施形態では、既存のデータテーブルを、概念テーブルに挿入してもよい。このような実施形態では、検証動作（不図示）でデータテーブルの存在を検証し、作成動作４０４は省略されるであろう。
【００３９】
図５は、本発明の一実施形態による動作フロー図であり、ここでは、概念テーブルからのデータがシュレッドされ、対応する１または複数のデータテーブルに格納される。
【００４０】
受信動作５０２は、概念テーブルに関連する１または複数の複合データ値を格納する信号を受信する。この信号は、ユーザが、データベース管理アプリケーション内でデータを明らかに格納した結果であってもよいし、または、修正データを同期させる自動プロセスの結果であってもよい。この受信動作５０２で信号を受信すると、分析動作５０４が起動する。
【００４１】
分析動作５０４では、複合データが格納される際に経由する概念テーブルを分析し、その概念テーブルの構造を判定する。この構造データに基づき、決定動作５０６では、データテーブル内のロケーションへの１または複数のマッピングを判定する。これらのマッピングは、１組のデータテーブル座標、データテーブルを含むメモリロケーションに対するポインタ、データテーブルファイルネーム、固有のレコード識別番号、またはデータをアドレス指定する他の手段でも、以上のあらゆる組合せの形を取ってもよい。
【００４２】
格納動作５０８では、概念テーブルからの１または複数のデータ値を、そのデータ値個別のデータテーブルに、上記マッピングを用いて格納する。その際、概念テーブルのデータは、すでに、うまくシュレッドされている。このデータは、カーソリング（図３と併せて上述し、また、図７と併せて下記で説明する）によって、後で「まとめられる（ｕｎｓｈｒｅｄｄｅｄ）」場合もある。ある実施形態では、格納動作５０８でデータストアを原子的に行う。また、他の実施形態では、格納動作５０８で、格納が全て完了しなかった状態をロールバックすることができる。
【００４３】
図６は、本発明の一実施形態による動作フロー図であり、ここでは、概念テーブルのクエリが、シュレッドされたデータを処理するために拡張される。受信動作６０２では、概念テーブルへのクエリを受信する。一実施形態では、このクエリは、ユーザによってテキスト形式で入れられてもよい。また、他の実施形態では、このクエリは、グラフィカルユーザインタフェースを用いて一部または全てが構成されてもよい。さらに他の実施形態では、このクエリは、コンピュータが自動的に生成してもよい。
【００４４】
分析動作６０４では、複合データがクエリされる際に経由する概念テーブルを分析し、その概念テーブルの構造を、データテーブルへのあらゆる関連マッピングとともに判定する。このマッピングは、（図５と併せて上述したような）さまざまな形式をとることが可能である。
【００４５】
判定動作６０６では、分析動作６０４で得られた構造データとマッピングとを、一組の拡張規則と併せて用い、クエリに適した規則があるかどうか、さらにその規則が拡張を必要としているかどうかを判定する。クエリに適した規則がない場合、または、適応可能な規則によって、拡張が完了したと決定された場合は、フローはＮＯに分岐し、発行動作６１０に進む。あるいは、１または複数の規則がクエリに適している場合は、フローはＹＥＳに分岐し、適用動作６０８に進む。
【００４６】
１または複数の拡張規則が、クエリに用いるのに適している場合は、適用動作６０８で、その規則に従ってクエリを拡張する。一実施形態では、適用動作で、クエリの拡張の一部として、新しいクエリを作成してもよい。いくつかの例示的拡張規則を、下記の表１〜１２に記載する。そこには、データを評価する前に、複数のデータテーブルを一緒に組み合わせるＪＯＩＮなどのＳＱＬ文を用いた拡張も含まれる。当業者には当然のことながら、判定動作６０６および適用動作６０８は、クエリが十分に拡張し、発行動作６１０がいつでもクエリを発行できるようになるまでは、繰り返し行ってもよい。２つ以上の規則は、さまざまな順番で適用することができ、１規則は、クエリの拡張において２回以上適用することができる。クエリのインクリメントな拡張を実施する実施形態では、クエリの拡張規則は、互いに直交が保たれており、このため、かなり簡単である。クエリのインクリメントな拡張を実施する実施形態では、データ構造は、インクリメントな拡張規則を適用した中間結果を格納する必要がある場合もある。また、代替実施形態では、複数のクエリ拡張規則を、適用動作６０８にて適用してもよい。
【００４７】
発行動作６１０では、判定および適用動作６０６、６０８にて拡張されたクエリを発行する。ある実施形態では、発行動作６１０で、直接、データベースのデータへのクエリを行う。また、代替実施形態では、発行動作６１０で、データベースサーバにクエリを送信する。
【００４８】
図７は、本発明の一実施形態による動作フロー図であり、ここでは、カーソリングによって、シュレッドされた概念テーブルからデータを検索することができる。受信動作７０２では、信号を受信し、概念テーブルの複合データを開く。この信号は、表示しなければならない複合データを含む既存の概念テーブルを、ユーザが開くことによって発生させてもよいし、また複合データを含む概念テーブルのフィールドに、ユーザがカーソルを移動させることによって発生させてもよい。あるいは、ユーザが生成したその他の入力、またはコンピュータが生成した入力によって発生させてもよい。
【００４９】
読み取り動作７０４では、概念テーブルに関連付けられたデータテーブルのロケーションへの１または複数のマッピングを読み取る。上記で論じたように、このマッピングは、さまざまな形式をとってもよい。次に、検索動作７０６で、マッピングによって示されたデータテーブルからスカラデータ値を検索する。検索動作７０６で検索したスカラ値は、概念テーブルに追加するのに用いられ、この概念テーブルは、表示動作７０８で表示される。
【００５０】
表示動作７０８では、検索動作７０６で検索したスカラ値を含む概念テーブルを表示する。一実施形態では、この概念テーブルを表示動作７０８にて直接、画面上にレンダリングしてもよく、また、他の実施形態では、アプリケーションプログラムインターフェース（ＡＰＩ）によってレンダリングを行ってもよく、さらに、他の想定内の実施形態では、当業者に既知である他のデータ表示法を用いてもよい。
【００５１】
当業者には当然のことながら、本願明細書中で主張する実施形態は、複合データ型を用いるデータベースやスプレッドシートアプリケーションのコンテキストで用いることができるばかりではなく、Microsoft（登録商標） Sharepointなどのコラボレーティブサービス用パッケージソフトのコンテキストでも用いることができる。このようなパッケージソフトは、複数の値を含むソフト専用の複合データ型（例えば、多項選択、添付ファイルなど）を内蔵している場合がある。これらの複合データ型も、本願明細書中で論じる例示的な実施形態と実質的に同様に扱うことが可能である。
【００５２】
特定の一実施形態では、１組のＳＱＬクエリ拡張規則は、クエリ拡張モジュール３０６（図３）、および判定動作６０６と適用動作６０８（図６）で用いられる。いくつかのＳＱＬクエリ拡張規則からなる例示的１組を表１〜１１に表す。これらの規則は、複合性が変化するという状況に対処する。一例では（表１）、かなり単純なＳＥＬＥＣＴクエリが拡張される。単純なＳＥＬＥＣＴクエリは、グループ化が行われない、あるいは集約がないクエリとして定義される。複合スカラフィールドについてなんら制約が設けられていない場合は、拡張クエリでは、親テーブルのみを参照すればよい。クエリのＷＨＥＲＥ節で、複合スカラについて制約が設けられている場合は、テーブルと複合データ型との間の結合を行わなければならない（基本的な例として、表１を参照）。ＷＨＥＲＥ節にあるフィルタは、必要に応じて修正し、テーブルの複合列の代わりに複合データ型を参照しなければならない。ＳＥＬＥＣＴ節にあるフィールドは、適切なテーブルリファレンスを用いて、同様に修正しなければならない。複合スカラに関する左結合ではない結合を、テーブルと別のテーブルとの間で行わなければならない場合は、拡張したクエリは、親テーブルとその複合テーブルとを結合するためのサブクエリを含むことになる（基本的な例として、表４を参照）。未拡張のクエリのＷＨＥＲＥ節にＮＯＴがあれば、このＮＯＴは、[Table].[Complex Column] NOT IN (SELECT [Complex Column] FROM [Table] JOIN [Flat Table] ON [Table].[Complex Column] = [Flat Table].[Foreign Key] WHERE [Flat Table].[Complex Scalar] = value)に変換されることになる。
【００５３】
表４〜１１に、集約クエリに対する拡張規則を図示する。そのような規則の１つは、複合型の集約が、テーブルと複合データ型との左結合（ＬＥＦＴ ＪＯＩＮ）に対し、実行されることである。また、もう１つ別の規則は、さまざまな複合型の集約が、未拡張のクエリにある場合は、その各集約複合型は、サブクエリを用いて計算することになる、ということである。また、ＨＡＶＩＮＧ節（表１０）があれば、外部クエリでは、ＷＨＥＲＥ節に変換されることになる。ＨＡＶＩＮＧ節が、集約ＳＥＬＥＣＴリスト中で別段参照されない複合型を参照する場合は、新たなサブクエリが作成され、テーブルと複合型とを結合することができる。
【００５４】
【表１】
2006172446.tif 000003
【００５５】
表１：複合スカラに対するフィルタの例
【００５６】
【表２】
2006172446.tif 000004
【００５７】
表２：複数の複合スカラに対するフィルタの例
【００５８】
【表３】
2006172446.tif 000005
【００５９】
表３：複合スカラを結合する場合のサブクエリの例
【００６０】
【表４】
2006172446.tif 000006
【００６１】
表４：複合型に関する集約の例
【００６２】
【表５】
2006172446.tif 000007
【００６３】
表５：同じ複合スカラに対して制約がある複合型に関する集約
【００６４】
【表６】
2006172446.tif 000008
【００６５】
表６：異なる複合スカラに対して制約がある複合型に関する集約の例
【００６６】
【表７】
2006172446.tif 000009
【００６７】
表７：複合スカラ１および複合スカラ２に対して制約がある複合型１に関する集約の例
【００６８】
【表８】
2006172446.tif 000010
【００６９】
表８：複合型１および複合型２に関する集約の例
【００７０】
【表９】
2006172446.tif 000011
【００７１】
表９：複合スカラ１および複合スカラ２に対して制約がある複合型１および複合型２に関する集約の例
【００７２】
【表１０】
2006172446.tif 000012
【００７３】
表１０：ＨＡＶＩＮＧ節における複合型の例
【００７４】
【表１１】
2006172446.tif 000013
【００７５】
表１１：ＨＡＶＩＮＧ節に複合型２がある複合型１に関する集約の例
【００７６】
以上説明した各種実施形態は、図示のためにのみ与えられるものであり、本発明を限定するものとみなしてはならない。当業者であれば、本明細書で図示し、説明した実施形態や用途例に従うことなく、かつ、以下の請求項に記載する本発明の真の精神と範囲から逸脱することなく、本発明を構成してもよいさまざまな修正形態や変更形態が即座に分かるであろう。
【図面の簡単な説明】
【００７７】
【図１】本発明の実施形態を実施してもよいデータベース環境を示す図である。
【図２】本発明の実施形態を実施してもよい適切なコンピューティングシステム環境の一例を示す図である。
【図３】本発明の一実施形態におけるモジュールの図である。
【図４】本発明の実施形態によるオペレーションを示す動作フロー図である。
【図５】本発明の実施形態によるオペレーションを示す動作フロー図である。
【図６】本発明の実施形態によるオペレーションを示す動作フロー図である。
【図７】本発明の実施形態によるオペレーションを示す動作フロー図である。
【符号の説明】
【００７８】
１０２  テーブル
１０４  注文ＩＤ列
１０６  顧客列
１０８  注文日付列
【図１】
2006172446.tif 000014
【図２】
2006172446.tif 000015
【図３】
2006172446.tif 000016
【図４】
2006172446.tif 000017
【図５】
2006172446.tif 000018
【図６】
2006172446.tif 000019
【図７】
2006172446.tif 000020