(57)【要約】【課題】  不適切な値が設定される可能性を低くするように、ベスト・プラクティス・ガイド・ラインをデータベース・アプリケーションの設計に組み込むための方法を提供すること。【解決手段】  データベース・オブジェクト用に提示された値は、ベスト・プラクティス・ガイド・ラインのアーカイブと比較することができる。提示された値がベスト・プラクティス・ガイド・ラインに準拠しない場合、ベストプラクティス推奨が提供され、かつデータベース・オブジェクトが操作されたり設定が永続化されたりする前に、提示された値を推奨値に変更する機会を与えることができる。【選択図】  図２
2006012148.tif 000002
【特許請求の範囲】
【請求項１】
ベスト・プラクティス・ガイド・ラインをサーバー・プロダクト設計に組み込むためのシステムであって、
サーバー・プロダクト・オブジェクトに対するオブジェクト操作に関連付けられた提示されたオブジェクト操作ステートメントを受信し、前記オブジェクト操作を実行する前に、前記提示されたオブジェクト操作ステートメントを前記サーバー・プロダクト・オブジェクトのためのベスト・プラクティス規則と比較するベスト・プラクティス・アナライザを備えることを特徴とするシステム。
【請求項２】
前記ベスト・プラクティス・アナライザは、前記オブジェクト操作のためのベスト・プラクティス推奨を返すことを特徴とする請求項１に記載のシステム。
【請求項３】
前記提示されたオブジェクト操作ステートメントが前記サーバー・プロダクト・オブジェクトのための前記ベスト・プラクティス規則に準拠すると決定することに応答して、前記オブジェクト操作が実行されることを特徴とする請求項１に記載のシステム。
【請求項４】
前記提示されたオブジェクト操作ステートメントが前記サーバー・プロダクト・オブジェクトのための前記ベスト・プラクティス規則に準拠しないと決定することに応答して、ベスト・プラクティス推奨が返されることを特徴とする請求項１に記載のシステム。
【請求項５】
前記提示されたオブジェクト操作ステートメントを受信し、前記提示されたオブジェクト操作ステートメントに関連付けられた情報をアプリケーション・プログラミング・インターフェース・モジュールに転送するためのインターフェースをさらに備え、前記アプリケーション・プログラミング・インターフェース・モジュールが前記提示されたオブジェクト操作ステートメントに関連付けられた前記情報を前記ベスト・プラクティス・アナライザに転送することを特徴とする請求項１に記載のシステム。
【請求項６】
ベスト・プラクティス推奨を前記ベスト・プラクティス・アナライザからユーザー・インターフェースに転送するアプリケーション・プログラミング・インターフェースをさらに備えることを特徴とする請求項１に記載のシステム。
【請求項７】
前記オブジェクト操作を実行するアプリケーション・プログラミング・インターフェースをさらに備えることを特徴とする請求項１に記載のシステム。
【請求項８】
前記ベスト・プラクティス・アナライザは前記サーバー・プロダクトのための前記ベスト・プラクティス規則を選択し、前記オブジェクト操作が推奨されたプラクティスに準拠するかどうかを決定するために、前記ベスト・プラクティス規則を前記提示されたオブジェクト操作ステートメントに適用することを特徴とする請求項１に記載のシステム。
【請求項９】
第１の規則および第２の規則を備えたベスト・プラクティス規則データ・ストアをさらに備え、前記第１の規則は、前記サーバー・プロダクトのための前記ベスト・プラクティス規則を備えることを特徴とする請求項１に記載のシステム。
【請求項１０】
前記サーバー・プロダクト・オブジェクトはサーバー・プロダクトの一部を備え、前記サーバー・プロダクトは、データベースを備えることを特徴とする請求項１に記載のシステム。
【請求項１１】
前記データベースは、ＳＱＬデータベースであることを特徴とする請求項１０に記載のシステム。
【請求項１２】
前記提示されたオブジェクト操作ステートメントは、オペレーションを備えることを特徴とする請求項１に記載のシステム。
【請求項１３】
前記提示されたオブジェクト操作ステートメントは、提示された特性設定を備えることを特徴とする請求項１に記載のシステム。
【請求項１４】
ベスト・プラクティスをデータベース設計に組み込む方法であって、
データベースのデータベース・オブジェクトのためのオブジェクト操作ステートメントであって、前記データベース・オブジェクトの特性の値を備えるオブジェクト操作ステートメントを受信する、
前記オブジェクト操作ステートメントを前記データベース設計のコンテクスト内で分析すること、および、
前記値が前記データベース・オブジェクトのためのベスト・プラクティス規則に準拠すると決定することに応答して、前記データベース・オブジェクトの前記特性の前記値を永続化すること
を備えることを特徴とする方法。
【請求項１５】
ベスト・プラクティスをデータベース設計に組み込む方法であって、
データベースのデータベース・オブジェクトのためのオブジェクト操作ステートメントであって、前記データベース・オブジェクトに関連付けられた値を備えるオブジェクト操作ステートメントを受信すること、
前記オブジェクト操作ステートメントを分析し、前記値が前記データベースの前記データベース・オブジェクトのためのベストプラクティス規則に準拠するかどうかを決定すること、および
前記値が前記データベースの前記データベース・オブジェクトのための前記ベストプラクティス規則に準拠しないと決定することに応答して、前記オブジェクト操作ステートメントに従って前記データベース・オブジェクトを操作する前に、前記ベスト・プラクティス規則に関連付けられた情報を提供すること
を備えることを特徴とする方法。
【請求項１６】
前記データベースは、ＳＱＬデータベースであることを特徴とする請求項１５に記載の方法。
【請求項１７】
前記オブジェクト操作ステートメントはユーザー・インターフェースによって受信され、前記ユーザー・インターフェースは前記オブジェクト操作ステートメントに関連付けられた情報をアプリケーション・プログラミング・インターフェースに転送することを特徴とする請求項１５に記載の方法。
【請求項１８】
ベスト・プラクティス・アナライザは、前記データベースから前記オブジェクト操作ステートメントに関連付けられた情報を取り出すことを特徴とする請求項１５に記載の方法。
【請求項１９】
アプリケーション・プログラミング・インターフェースは、前記オブジェクト操作ステートメントに関連付けられた情報をベスト・プラクティス・アナライザに転送することを特徴とする請求項１５に記載の方法。
【請求項２０】
ベスト・プラクティス・アナライザは、ベスト・プラクティス・データ・ストアから前記データベース・オブジェクトに関連付けられた前記ベスト・プラクティス規則を選択し、前記値は、前記ベスト・プラクティス規則に準拠するかどうかを決定することを特徴とする請求項１５に記載の方法。
【請求項２１】
前記オブジェクト操作ステートメントの分析し、前記値が前記データベースの前記データベース・オブジェクトのためのベストプラクティス規則に準拠するかどうかを決定することは、
前記データベースの前記データベース・オブジェクトに関連付けられた前記ベスト・プラクティス規則を選択することを備えることを特徴とする請求項１５に記載の方法。
【請求項２２】
前記ベスト・プラクティス規則に準拠するように前記値を修正する機会を提供することをさらに備えることを特徴とする請求項１５に記載の方法。
【請求項２３】
前記値を永続化することをさらに備えることを特徴とする請求項１５に記載の方法。
【請求項２４】
データベース・オブジェクトの提示された特性設定を分析し、提示された前記特性設定がベストプラクティス規則に準拠するかどうかを決定するシステムであって、
データベースの前記データベース・オブジェクトのための前記提示された特性設定を受信し、前記データベース・オブジェクトを永続化する前に前記データベース・オブジェクトのためのベスト・プラクティス特性設定を提供するベスト・プラクティス・アナライザを備えることを特徴とするシステム。
【請求項２５】
前記提示された特性設定を受信するための、および前記提示された特性設定に関連付けられた情報をアプリケーション・プログラミング・インターフェースに送信するためのユーザー・インターフェースをさらに備えることを特徴とする請求項２４に記載のシステム。
【請求項２６】
前記提示された特性設定に関連付けられた情報を受信するための、および前記データベースの前記提示された特性設定を永続化するためのアプリケーション・プログラミング・インターフェースをさらに備えることを特徴とする請求項２４に記載のシステム。
【請求項２７】
データベースのコンテクストの中で、前記データベース・オブジェクトの前記提示された特性設定を設定するための少なくとも１つのベスト・プラクティス・ガイド・ラインを備えるデータ・ストアをさらに備えることを特徴とする請求項２４に記載のシステム。
【請求項２８】
コンピュータ読み取り可能媒体であって、
データベースのデータベース・オブジェクトのための提示された特性値を受信すること、および
前記提示された特性値が永続化される前に前記提示された特性値が前記データベース・オブジェクトに関連付けられたベスト・プラクティス情報のアーカイブに準拠するかどうかを決定すること
を実行するためのコンピュータ読み取り可能命令を備えることを特徴とするコンピュータ読み取り可能媒体。
【請求項２９】
前記データベース・オブジェクトのための推奨される特性値に関連付けられた情報を提供することを実行するコンピュータ読み取り可能命令をさらに備えることを特徴とする請求項２８に記載のコンピュータ読み取り可能媒体。
【請求項３０】
前記提示された特性値が永続化される前に前記提示された特性値を変更する機会を提供することを実行する
コンピュータ読み取り可能命令をさらに備えることを特徴とする請求項２８に記載のコンピュータ読み取り可能媒体。
【請求項３１】
前記データベース・オブジェクトのための推奨される特性設定を上書きする機会を提供することを実行する
コンピュータ読み取り可能命令をさらに備えることを特徴とする請求項２８に記載のコンピュータ読み取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピューティングに関し、特に、ベスト・プラクティス・ガイド・ラインをデータベース設計に組み込むことに関する。
【背景技術】
【０００２】
従来、データベース設計には、データベース、テーブル、ビュー、ストアド・プロシージャ、データ・タイプ、トリガー、索引などを含むオブジェクトの作成が含まれる。これらのオブジェクトは特性（properties）を有し、そこには、個別に、または相互に関係させて値を関連付ける必要がある。一般に、データベース・オブジェクトの作成においては、設定される値の正確さを保証するために１つまたは複数の検証プロセスが実行される。典型的には、正確さの検証の後に、データベース・システムによりクリエーション・ステートメントが実行され、その結果、オブジェクトが作成されるか、またはデータベース・オブジェクトの設定（setting）が永続化される。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
値の妥当性または正しさはオブジェクトの作成前に決定されるが、値の適切性については、通常チェックされない。所与の値は、１つのデータベース設計については適切であるかもしれないが、一方で同じ値は、別のデータベース設計については、正しくはあっても適切ではない。所与の値が特定のデータベース・オブジェクトに対して適切か否かは、典型的には、アプリケーション固有であり、関係するオブジェクトに割り当てられた値に依存する場合がある。さらに、所与の値が特定のオブジェクトに対して適切か否かは、時間の経過と共に変化または展開する（evolve）場合がある。不適切な値または値の設定はデータベース・アプリケーションの性能、可用性およびセキュリティに影響を与える。したがって、値を適切に設定することは最も重要である。
【０００４】
データベース・オブジェクトが作成される前に、データベース・オブジェクトの値が適切に設定されることを保証し、その結果不適切な値が設定される可能性が少なくなるような方法が存在すれば役立つであろう。
【０００５】
【非特許文献１】Cain, J.W. et al., "Visual Class Tool for Assessing and Improving C++ Product Quality", Proceedings of the LASTED International Conference, 1999, 240-246
【非特許文献２】Edgar-Nevill, V. et al., ""Measuring Software Quality Improvement: A Case Study", Software Quality Concern for People, 4th European Conference on Software Quality, 1994, 400-411
【課題を解決するための手段】
【０００６】
不適切な値が設定される可能性を低くするように、ベスト・プラクティス・ガイド・ラインがデータベース・アプリケーションの設計に組み込まれる。データベース・オブジェクト用に提示された値を、ベスト・プラクティス・ガイド・ラインのアーカイブと比較することができる。提示された値がベスト・プラクティス・ガイド・ラインに準拠しない場合、ベスト・プラクティス推奨（recommendation）が提供され、かつデータベース・オブジェクトが操作されたり設定が永続化されたりする前に、提示された値を推奨値に変更する機会を与えることができる。推奨値を上書きする機会も与えることができる。
【０００７】
ベスト・プラクティスをデータベース設計に組み込むためのシステムは、オブジェクトが操作されるまたは設定が永続化される前または後に、データベース・オブジェクト用に提示された設定に関連付けられた情報を受信し、データベースに関する追加情報が必要かどうかを決定し、必要な場合は追加情報を取り出し、提示されたまたは既存の設定に関するフィードバックを提供する、ベスト・プラクティス・アナライザを含むことができる。
【発明を実施するための最良の形態】
【０００８】
前述の「課題を解決するための手段」および実施の形態の詳細な説明は、添付の図と一緒に読むことにより、より深く理解される。本発明を説明する目的で、図中に本発明の例示的構築が示されるが、本発明は開示された特定の方法および手段に限定されない。
【０００９】
概観
インターネットを介して注文できる、新規の商品データベースを計画すると想定する。データベース・オブジェクトには、データベースのサイズおよび拡大に関係するいくつかの特性（properties）が含まれると想定する。データベースの「ＦＩＬＥＧＲＯＷＴＨ」特性は、データベースが一杯になり、さらにスペースが必要になったときに、データベースが拡大できる量を示すことができる。「ＦＩＬＥＧＲＯＷＴＨ」は、固定量単位（例えば、スペースの限度に達するたびに、９０メガバイトの追加スペースがデータベースのサイズに追加される）、または指定されたパーセンテージ単位（例えば、スペースの限度に達するたびに、初期または現在のデータベースサイズの１０％に当たるスペースがデータベースに割り当てられたスペースに追加される）で、データベース拡大の増加分を示すことができる。
【００１０】
商品データベースのサイズは、最初は１０メガバイトに設定されており、かつ拡大特性はＦＩＬＥＧＲＯＷＴＨに１０％で設定されると想定する。システムが最もビジーである可能性が高い日中に、データベース・スペースの限度に達した場合、ａｕｔｏｇｒｏｗ（自動拡大）プロセスが原因で、顧客は、おそらく応答が遅くなったことを体験するであろう。したがって、頻繁に更新される拡大特性を設定すること、すなわち１０メガバイトのデータベースの拡大特性をＦＩＬＥＧＲＯＷＴＨに１０％と設定することは望ましくないと見なすことができる。最初により大きなデータベースを作成し（例えば、１００メガバイトのデータベース）、かつ顧客の数がより少なくなる真夜中に２０％単位でこれを拡大するようにスケジュールすることがより適切なプラクティスである場合がある。
【００１１】
本発明のいくつかの実施形態に従うと、対話的ベスト・プラクティス・アナライザはデータベースのセットアップ中に起動することができる。対話的ベスト・プラクティス・アナライザは、新規データベースおよび／またはベスト・プラクティス・ベース値のアーカイブに関する既知の情報を参照して、セットアップ中の特定のデータベースのためのベスト・プラクティス・ガイド・ラインを決定することができる。データベースのオブジェクトの特性について提示された設定（値）の受信に応答して、提示された値に関するフィードバックが戻され、その結果、データベース・オブジェクトの特性に対して適切な値が選択される可能性が高まる。
【００１２】
同様に、既存のデータベースは時間の経過と共に変更される場合があり、その結果データベースの初期の特徴はもはや有効ではなくなる可能性がある。本発明のいくつかの実施形態に従うと、既存のデータベースに加える変更は、ベスト・プラクティス・ガイド・ラインの準拠について分析される。ベスト・プラクティス・ガイド・ラインへの準拠に関するフィードバックを提供することも可能である。
【００１３】
例示的コンピューティング環境
図１および以下の考察は、本発明を実装することができる適切なコンピューティング環境についての簡単な一般的説明を提供することを意図している。ただし、ハンドヘルド、携帯用、およびすべての種類の他のコンピューティング装置は、本発明に関連して使用することが予期されることを理解されたい。汎用コンピュータを以下に説明するが、これは一実施例に過ぎず、また本発明にはネットワーク・サーバーの相互運用性および対話性を有するシン・クライアント（thin client）のみが必要である。したがって、本発明はきわめて少数または最少のクライアント・リソースを含む、ネットワーク化してホストされるサービスの環境、例えば、クライアント装置が単にブラウザまたはワールド・ワイド・ウェブへのインターフェースとしてのみ働くネットワーク環境、に実装することができる。
【００１４】
必須ではないが、本発明は開発者が使用するためにアプリケーション・プログラミング・インターフェース（ＡＰＩ）を介して実装することができ、かつ／またはクライアント・ワークステーション、サーバー、もしくは他の装置などの１つまたは複数のコンピュータにより実行されるプログラム・モジュールなどの、コンピュータが実行可能な命令の一般的なコンテクストの中で記述されるネットワーク閲覧ソフトウェア内に含めることができる。一般に、プログラム・モジュールは、特定のタスクを実行するまたは特定の抽象データ・タイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。通常、プログラム・モジュールの機能性（functionality）は、様々な実施形態で望ましいように結合または分散することができる。さらに、本発明が他のコンピュータ・システム構成で実施できることを当業者なら理解するであろう。本発明での使用に適している可能性がある他の周知のコンピューティング・システム、環境、および／または構成には、これに限定されるものではないが、パーソナル・コンピュータ（ＰＣ）、現金自動預け払い機（ＡＴＭ）、サーバー・コンピュータ、手持ちサイズまたはラップトップ装置、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベースのシステム、プログラム可能な家庭用電子機器、ネットワークＰＣ、ミニ・コンピュータ、メインフレーム・コンピュータなどを含む。本発明は、通信ネットワークまたは他のデータ伝送媒体を介してリンクされたリモート処理装置によってタスクが実行される、分散コンピューティング環境でも実施することができる。分散コンピューティング環境において、プログラム・モジュールはメモリ記憶装置を含む、ローカルおよびリモートの両方のコンピュータ記憶媒体に配置することができる。
【００１５】
図１は、本発明を実装することができる、適切なコンピューティング・システム環境１００の実施例を示している。前述で明らかではあるが、コンピューティング・システム環境１００は適切なコンピューティング環境の一実施例に過ぎず、かつ本発明の使用または機能の範囲について制限を示すことを意図したものではない。また、コンピューティング環境１００は、例示的操作環境１００に示された複数のコンポーネントの任意の１つまたはコンポーネントの任意の組合せに関係する依存性または要件を有すると解釈するべきではない。
【００１６】
図１を参照すると、本発明の実装のための例示的システムは、コンピュータ１１０の形の汎用コンピューティング装置を含む。コンピュータ１１０のコンポーネントは、処理ユニット１２０、システム・メモリ１３０、およびシステム・メモリを含む様々なシステムコンポーネントを処理ユニット１２０と結合するシステム・バス１２１を含むことができるが、これらに限るものではない。システム・バス１２１は、各種のバス・アーキテクチャのいずれかを使用した、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、およびローカル・バスを含むバス構造のいくつかの種類のいずれかにすることができる。例として、ただしこれに限るものではないが、このようなアーキテクチャはＩＳＡ（Industry Standard Architecture）バス、ＭＣＡ（Micro Channel Architecture）バス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ＶＥＳＡ（Video Electronics Standards Association）ローカル・バス、およびＰＣＩ（Peripheral Component Interconnect）バス（Ｍｅｚｚａｎｉｎｅバスとしても知られている）を含む。
【００１７】
コンピュータ１１０は、通常、様々なコンピュータが読み取り可能な媒体を含む。コンピュータが読み取り可能な媒体は、コンピュータ１１０によりアクセス可能であり、かつ揮発性および不揮発性の両方の媒体、取り外し可能および取り外し不能の両方の媒体を含む任意の利用可能な媒体とすることができる。例として、ただしこれに限るものではないが、コンピュータが読み取り可能な媒体は、コンピュータ記憶媒体および通信媒体を備えることができる。コンピュータ記憶媒体は、コンピュータが読み取り可能な命令、データ構造、プログラム・モジュールまたは他のデータなどの情報を格納するための任意の方法または技術で実装される、揮発性および不揮発性の両方、取り外し可能および取り外し不能の両方の媒体を含む。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリもしくは他のメモリ技術、ＣＤＲＯＭ、ＤＶＤ（デジタル多用途ディスク）もしくは他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または望ましい情報の格納に使用でき、かつコンピュータ１１０によってアクセス可能なその他の任意の媒体を含むが、これらに制限されるものではない。通信媒体は、通常、コンピュータが読み取り可能な命令、データ構造、プログラム・モジュールまたはその他のデータを、搬送波または他の移送機構などの変調されたデータ信号に具体化し、かつ任意の情報配送媒体を含む。用語「変調されたデータ信号」とは、信号の１つまたは複数の特徴が当該信号の情報をコード化するような方法で設定または変更されている信号を意味する。例として、ただしこれに限るものではないが、通信媒体は有線ネットワークまたは直接有線接続などの有線媒体、および音響、ＲＦ、赤外線、ならびに他の無線媒体などの無線媒体を含む。上記の任意のものの組合せも、コンピュータが読み取り可能な媒体の範囲に含まれるべきである。
【００１８】
システム・メモリ１３０は、読み取り専用メモリ（ＲＯＭ）１３１およびランダム・アクセス・メモリ（ＲＡＭ）１３２などの揮発性および／または不揮発性メモリの形のコンピュータ記憶媒体を含む。基本入出力システム１３３（ＢＩＯＳ）は、起動時などにコンピュータ１１０内の要素間での情報の転送を助ける基本ルーチンを含み、通常ではＲＯＭ  １３１に格納される。ＲＡＭ  １３２は、通常、ダイレクトにアクセス可能であり、かつ／または現在処理ユニット１２０により操作されているデータおよび／またはプログラム・モジュールを含む。例として、ただしこれに限るものではないが、図１はオペレーティング・システム１３４、アプリケーション・プログラム１３５、他のプログラム・モジュール１３６、およびプログラム・データ１３７を示す。
【００１９】
コンピュータ１１０は、他の取り外し可能／取り外し不能な、揮発性／不揮発性コンピュータ記憶媒体も含むことが可能である。例としてのみであるが、図１は取り外し不能な、不揮発性磁気媒体に対して読み書きするハードディスク・ドライブ１４１、取り外し可能な不揮発性磁気ディスク１５２に対して読み書きする磁気ディスク・ドライブ１５１、およびＣＤ  ＲＯＭまたは他の光媒体などの取り外し可能な、不揮発性光ディスク１５６に対して読み書きする光ディスク・ドライブ１５５を示す。例示的な操作環境で使用できる他の取り外し可能／取り外し不能な、揮発性／不揮発性コンピュータ記憶媒体には、磁気テープ・カセット、フラッシュ・メモリ・カード、ＤＶＤ、デジタル・ビデオ・テープ、ソリッド・ステート（solid state）ＲＡＭ、ソリッド・ステートＲＯＭなどが含まれるが、これらに限るものではない。ハードディスク・ドライブ１４１は、典型的にはインターフェース１４０などの取り外し不能なメモリ・インターフェースを介してシステム・バス１２１に接続され、また、磁気ディスク・ドライブ１５１および光ディスク・ドライブ１５５は、典型的にはインターフェース１５０などの取り外し可能なメモリ・インターフェースによってシステム・バス１２１に接続される。
【００２０】
前述の、図１に示したドライブおよびそれらに関連付けられたコンピュータ記憶媒体は、コンピュータ１１０のためのコンピュータが読み取り可能な命令、データ構造、プログラム・モジュールおよび他のデータの記憶領域（storage）を提供する。例えば図１では、ハードディスク・ドライブ１４１は、オペレーティング・システム１４４、アプリケーション・プログラム１４５、他のプログラム・モジュール１４６、およびプログラム・データ１４７を格納するものとして示されている。これらのコンポーネントは、オペレーティング・システム１３４、アプリケーション・プログラム１３５、他のプログラム・モジュール１３６、およびプログラム・データ１３７と同じ場合も異なる場合もあることに注意されたい。オペレーティング・システム１４４、アプリケーション・プログラム１４５、他のプログラム・モジュール１４６、およびプログラム・データ１４７は、それらが少なくともそれぞれ異なるコピーであることを示すために、ここでは別個の番号が付与されている。ユーザーは、キーボード１６２、および通常はマウス、トラック・ボールまたはタッチ・パッドと称されるポインティング装置１６１などの入力装置を介してコマンドおよび情報をコンピュータ１１０に入力することができる。他の入力装置（図示されない）には、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどが含まれる。これらのおよび他の入力装置は、システム・バス１２１に結合されたユーザー入力インターフェース１６０を介して処理ユニット１２０に接続される場合が多いが、パラレル・ポート、ゲーム・ポートまたはユニバーサ・ルシリアル・バス（ＵＳＢ）などの他のインターフェースおよびバス構造によって接続することができる。
【００２１】
モニタ１９１または他のタイプの表示装置も、ビデオ・インターフェース１９０などのインターフェースを介してシステム・バス１２１に接続される。ノース・ブリッジなどのグラフィックス・インターフェース１８２も、システム・バス１２１に接続することができる。ノース・ブリッジとは、ＣＰＵ、つまりホスト処理ユニット１２０と通信し、ＡＧＰ（Accelerated Graphics Port）通信を担当するチップセットである。１つまたは複数のグラフィックス処理ユニット（ＧＰＵ）１８４は、グラフィックス・インターフェース１８２と通信することができる。この点において、ＧＰＵ  １８４は一般にレジスタ記憶領域などのオン・チップ・メモリ記憶領域を含み、かつＧＰＵ  １８４はビデオ・メモリ１８６と通信する。ただしＧＰＵ  １８４は、コプロセッサの一実施例に過ぎず、したがって様々なコプロセシング装置をコンピュータ１１０に含めることが可能である。モニタ１９１または他のタイプの表示装置も、ビデオ・インターフェース１９０などのインターフェースを介してシステム・バス１２１に接続され、さらにビデオ・メモリ１８６と通信することができる。モニタ１９１の他に、コンピュータはスピーカー１９７およびプリンタ１９６などの他の周辺出力装置も含むことが可能であり、これらは出力ペリフェラル・インターフェース１９５を介して接続できる。
【００２２】
コンピュータ１１０は、リモート・コンピュータ１８０などの１つまたは複数のリモート・コンピュータへの論理接続を使用して、ネットワーク環境で動作することができる。リモート・コンピュータ１８０は、パーソナル・コンピュータ、サーバー、ルーター、ネットワークＰＣ、ピア装置または他の共通ネットワーク・ノードであることが可能であり、かつ、図１にはメモリ記憶装置１８１のみが示されているが、典型的にはコンピュータ１１０に関係して前述した要素の多くまたはすべてを含む。図１に示す論理接続は、ローカル・エリア・ネットワーク（ＬＡＮ）１７１およびワイド・エリア・ネットワーク（ＷＡＮ）１７３を含むが、他のネットワークも含むことができる。このようなネットワーキング環境は、オフィス、事業体規模のコンピュータ・ネットワーク、イントラネットおよびインターネットにおいて一般的である。
【００２３】
ＬＡＮネットワーキング環境で使用するときは、コンピュータ１１０はネットワーク・インターフェースすなわちアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境で使用するときは、コンピュータ１１０は典型的にはモデム１７２、またはインターネットなどのＷＡＮ１７３での通信を確立するための他の手段を含む。モデム１７２は、内蔵または外付けにすることが可能であるが、ユーザー入力インターフェース１６０または他の適切な機構を介してシステム・バス１２１に接続することができる。ネットワーク環境では、コンピュータ１１０に関係して示されたプログラム・モジュールまたはその一部は、リモート・メモリ記憶装置内に格納することができる。例として、ただしこれに限るものではないが、図１ではリモート・アプリケーション・プログラム１８５はメモリ装置１８１上に常駐するものとして示されている。示されたネットワーク接続は一例であり、コンピュータ間の通信リンクを確立する他の手段を使用できることが理解されるであろう。
【００２４】
コンピュータ１１０または他のクライアント装置は、コンピュータ・ネットワークの一部として展開できることを当業者は理解できるであろう。この点において、本発明は、任意の数のメモリまたは記憶ユニット、ならびに任意の数の記憶ユニットまたはボリュームにわたって存在すする任意の数のアプリケーションおよびプロセスを有する任意のコンピュータ・システムに関連する。本発明は、リモートまたはローカルの記憶装置を有し、ネットワーク環境内に展開された、サーバー・コンピュータおよびクライアント・コンピュータを備えた環境に適用できる。本発明はまた、プログラミング言語機能、解釈および実行機能を有する、スタンドアロン・コンピューティング装置にも適用できる。
【００２５】
ベスト・プラクティス・ガイド・ラインのデータベース設計への組み込み
図２は、ベスト・プラクティス・ガイド・ラインをデータベース設計に組み込む例示的方法２００の流れ図である。方法２００のステップの１つまたは複数は任意選択にすることができる。
【００２６】
ステップ２０２において、提示されたオブジェクト操作ステートメントまたはステートメントのグループを受信することができる。本発明のいくつかの実施形態では、オブジェクト操作ステートメントはＢＡＣＫＵＰおよびＲＥＳＴＯＲＥなどのオペレーションを含むことができるが、これに限るものではない。例示的オブジェクト操作ステートメントには、ＣＲＥＡＴＥ（生成）、ＡＬＴＥＲ（変更、更新）、ＤＲＯＰ（除去）、ＳＨＲＩＮＫ（縮小）、ＡＴＴＡＣＨ（付加）、ＤＥＴＡＣＨ（切り離し）、ＢＡＣＫＵＰ（バックアップ）、およびＲＥＳＴＯＲＥ（復元）の各ステートメントならびにその他が含まれる場合がある。本発明のいくつかの実施形態では、オブジェクト操作ステートメントはＡＮＳＩ（American National Standards Institute）ＳＱＬ  ＤＤＬなどの、データ定義言語（ＤＤＬ）で提供されるが、企図される本発明はこれに限るものではない。
【００２７】
本発明のいくつかの実施形態では、データベース・オブジェクトに割り当てるために提示された値が有効または正しいかどうか、すなわち、このような値がオブジェクトに対して許可できる値であるかどうかを決定するために、提示されたオブジェクトの操作ステートメントの妥当性が検査される。１つまたは複数のレベルの妥当性検査を実行することができる。
【００２８】
ステップ２０４において、提示された値は、作成、設計、変更または操作されるデータベースのタイプに対するベスト・プラクティスを表すと見なされる値のアーカイブと比較することができる。
【００２９】
ステップ２０６において、そのステートメントがベスト・プラクティスに準拠するかどうか、すなわち、そのオブジェクトが関連付けられた特定のデータベースに対してその値が適切な値であると見なされるかどうかを決定するために、そのステートメントを分析することができる。ステートメントがベスト・プラクティスに準拠する場合は、ステップ２０８において、そのオブジェクトはオブジェクト操作ステートメント（例えばオブジェクトの作成または変更、特性値の永続化など）に従って操作されることができる。ステートメントがベスト・プラクティスに準拠しない場合、ステップ２１０において、関係するベスト・プラクティス・ガイド・ラインに関連付けられた情報を含むフィードバックを返すことができる。返されるフィードバックは、推奨についてのより完全な説明を受信するためのオプションを含むことができる。またベスト・プラクティスに準拠する値についてのフィードバックが、その操作が実行される前に、提供される場合もある。
【００３０】
ステップ２１２において、提示された値を修正する機会を与えることができる。提示された値がベスト・プラクティス推奨に準拠するように修正された場合、その操作はステップ２０８において実行することができる。ステップ２１４において、ベスト・プラクティス推奨を上書きする機会を与えることができる。推奨が上書きされた場合、操作はステップ２０８において、準拠しない値を使用して実行することができる。
【００３１】
例えば、ユーザーが所与の注文についての販売情報を返すストアド・プロシージャを作成することを望んでいると想定する。ユーザーは以下のように入力することができる（ステップ２０２）。
【００３２】
【表１】
2006012148.tif 000003
【００３３】
【表２】
2006012148.tif 000004
【００３４】
ステップ２０４において、ＣＲＥＡＴＥ  ＰＲＯＣＥＤＵＲＥは分析され、「ｓｐ＿」で始まる名前を使用したこのプロシージャの呼び出しはベスト・プラクティスではないことが決定される場合がある。ステップ２１０において、「ストアド・プロシージャの命名規則にｓｐ＿が使用されています。これはベスト・プラクティスではありません。推奨される命名規則は、‘ｕｓｐ＿’です。これがベスト・プラクティスではない理由の詳しい説明については、Ｘを選択してください。」のようなメッセージを含むダイアログボックスの形でフィードバックを返すことができる。すなわち、この例では、上記のストアド・プロシージャの適切な名前は、ｕｓｐ＿ＣｕｓｔＯｒｄｅｒｓＤｅｔａｉｌである。したがって、ベスト・プラクティスに準拠するストアド・プロシージャは、以下のようにすることができる。
【００３５】
【表３】
2006012148.tif 000005
【００３６】
ステップ２１２において、ストアド・プロシージャを修正する機会を与えることができる。ストアド・プロシージャがベスト・プラクティス推奨に準拠するように修正された場合、オブジェクトは、ステップ２０８において作成することができる。
【００３７】
図３は、ベスト・プラクティス・ガイド・ラインをデータベース設計に組み込むためのシステムのブロック図である。システムは、新規データベース・オブジェクトの作成、または既存のデータベース・オブジェクトの改変もしくは修正に使用することができる。データベース・オブジェクトは、１つまたは複数のコンピュータにインストールされた１つまたは複数のデータベース内に常駐することができる。ベスト・プラクティス・ガイド・ラインをデータベース設計に組み込むためのシステムは、図１を参照して前述したコンピュータ１１０などのコンピュータ上に常駐したり、または図１を参照して前述したネットワークを介して接続される１つまたは複数のコンピュータに分散したりすることができる。
【００３８】
本発明のいくつかの実施形態に従う、ベスト・プラクティス・ガイド・ラインをデータベース設計に組み込むためのシステムは、以下のコンポーネント、すなわち、入力３１０を受信し、かつ入力３１０に関連付けられた情報をＡＰＩ（アプリケーション・プログラミング・インターフェース）モジュール３１４に転送するインターフェース３１２、入力３１０に関連付けられた情報を受信し、かつそれに関連付けられた情報をベスト・プラクティス・ツール３１６に転送するＡＰＩ  ３１４、入力３１０に関連付けられた情報をＡＰＩ  ３１４から受信し、かつベスト・プラクティスに関連付けられた情報をＡＰＩ  ３１４に返すベスト・プラクティス・ツール３１６、ベスト・プラクティス規則のデータ・ストア３２２、およびデータベース３０２などの１つまたは複数のデータベースの１つまたは複数、を含むことができる。
【００３９】
データベース３０２などのデータベースは、オブジェクト３０４、３０６などのいくつかのオブジェクトを含むことができる。オブジェクト３０４、３０６などは、作成したり、改変したり、変更したり、削除したり、および／または操作を実行したりすることができる。これらのオブジェクトは、サイズ、所有者、セキュリティなどの特性に関連付けることができる。データベース３０２は、Ｍｉｃｒｏｓｏｆｔ  ＳＱＬ  Ｓｅｒｖｅｒ、Ｍｉｃｒｏｓｏｆｔ  Ａｃｃｅｓｓ、Ｏｒａｃｌｅ、ＩＢＭ  ＤＢ２、Ｉｎｆｏｒｍｉｘ、Ｓｙｂａｓｅ、ＭｙＳｑｌ、ＩｎｔｅｒＢａｓｅなどのリレーショナル・データベース管理システム（ＲＤＭＳ）にすることができる。
【００４０】
データ・ストア３２２は、１つまたは複数の規則すなわちベスト・プラクティスを含むことができる。本発明のいくつかの実施形態では、データベース３０２内に、データベース３０２に関連付けられた、およびオブジェクト３０４、３０６などに関連付けられた一連の規則すなわちベスト・プラクティス３２０ａ、３２０ｂ、３２０ｃなどがある。規則３２０ａ、３２０ｂ、３２０ｃなどは、実装に固有である。すなわち、データ・ストア３２２は、データベース３０２と互換性のある特徴を備えたデータベースに関連付けられたベスト・プラクティス・ガイド・ラインのみを含むことができる。代替方法として、規則３２０ａ、３２０ｂ、３２０ｃなどのデータ・ストア３２２は、いくつかの異なるタイプのデータベース用のベスト・プラクティスのデータ・ストアを備え、そこからデータベース３０２に類似するデータベースに関連付けられたベスト・プラクティス・ガイド・ラインが、データベース３０２に適用するために選択される。
【００４１】
ベスト・プラクティス・ツール３１６（いくつかの実施形態では、ベスト・プラクティス・エンジン３１８を含む）は、規則３２０ａ、３２０ｂ、３２０ｃなどの１つまたは複数を読み込むことができ、これらは、ベスト・プラクティスという観点からデータベース３０２をテストする方法をベスト・プラクティス・エンジン３１８に伝える。本発明のいくつかの実施形態では、ベスト・プラクティス・エンジン３１８は拡張可能である。すなわち、新規規則を規則のデータベース３２２に追加できる。
【００４２】
規則３２０ａ、３２０ｂ、３２０ｃなどは、所与のデータベース内でより大きなまたはより少ないコンテクストすなわち適切性（appropriateness）を有することができる。例えば、一部の規則は実質的にデータベースのすべてのタイプに適用することができる。他の規則は、特定の設定または特徴（settings or characteristics）を有するデータベースのみに適用することができる。例えば、所与の規則はデータベースのサイズ、データベースの複雑さに依存して適用でき、またはデータベースの、いくつかの特定の特性もしくは特性のグループに基づくことができる。このシステムのいくつかの実施形態では、データベースに適用される規則のグループは、実装されるまたは修正されるデータベースの特性によって決定される。規則３２０ａ、３２０ｂ、３２０ｃなどは、ファイル、ファイルの集まり、データベースなどとして実装されたデータ・ストア３２２を備えることができる。データ・ストア３２２または規則３２０ａ、３２０ｂ、３２０ｃなどの１つまたは複数は、コンピュータ１１０に常駐することができ、かつ／またはインターネットなどのコンピュータ・ネットワーク上のリモート・サイトからダウンロードすることができ、かつ／またはコンピュータのネットワーク内の１つまたは複数のコンピュータ上に常駐することができる。
【００４３】
本発明のいくつかの実施形態では、インターフェース３１２はオブジェクト３０４、３０６などに関する入力３１０、およびオブジェクト３０４、３０６などに関連付けられた特性を受信する。インターフェース３１２は、インターフェース内の精度（granularity）のレベルを表す１つまたは複数の層を備えることができる。入力３１０は、オブジェクト３０４、３０６などについてのバックアップ、復元、作成、変更（alteration）または削除などのオブジェクトの操作オペレーション（manipulation operation）に関連付けられた情報を含むことができる。いくつかの実施形態では、例えば、入力３１０は、上記のように、ストアド・プロシージャを作成もしくは修正するステートメントもしくはステートメントのグループ、またはデータベースのＦＩＬＥＧＲＯＷＴＨを変更するＡＬＴＥＲステートメントを含むことができる。入力は、ＲＤＭＳに関連付けられたデータ定義言語であることができる。いくつかの実施形態のインターフェース３１２は、入力３１０を受信し、かつ入力３１０に関連付けられた情報をＡＰＩ  ３１４に送信する。いくつかの実施形態のＡＰＩ  ３１４は、ベスト・プラクティス・ツール３１６と通信して、入力３１０がデータベース３０２のベストプラクティスに準拠するかどうかを決定する。
【００４４】
入力がベスト・プラクティス規則データベース３２２に準拠する場合、いくつかの実施形態では、前述のように、ＡＰＩ  ３１４により、入力３１０に従ってデータベース３０２は更新されたり、オブジェクトが作成されたり、または設定が永続化されたりする。入力がベスト・プラクティス規則データベース３２２に準拠しない場合、ＡＰＩ  ３１４およびインターフェース３１２を介して、例えば、指定された設定がベストプラクティスに準拠しないことを示すメッセージを返すことができる。いくつかの実施形態では、準拠しない設定は上書きすることができる。いくつかの実施形態では、準拠しない設定は所定の値に変更される。メッセージは、表示画面のダイアログボックスを介して、プログラムによってプログラム・モジュールに返す、または任意の適切な手段を介して返すことができる。
【００４５】
本発明のいくつかの実施形態では、オブジェクトのグループに関連付けられた設定のグループが検査され、適用されるべきベスト・プラクティス規則の１つまたは複数が、設定およびオブジェクトの組合せによって決定される。
【００４６】
図４は、ベスト・プラクティスをデータベース設計内に組み込むためのシステムの、コンポーネント間の相互作用を示すブロック図である。
【００４７】
矢印４５０で示すように、入力４０２はユーザー・インターフェース４０４に供給することができる。本発明のいくつかの実施形態では、入力４０２は、前述のように、実装されるもしくは改変されるデータベースの１つまたは複数のオブジェクトの１つまたは複数の特性についての１つまたは複数の提示された設定であることが可能であり、または他のオブジェクト操作オペレーションであることが可能である。入力４０２は、データベース管理者などの、ただしこれに限るものではないが、ユーザーによって供給されたり、または自動データベース作成ツールを介して提供されたりする場合がある。矢印４５２で示すように、ユーザー・インターフェース４０４は、ユーザー・インターフェース４０４とデータベース４０８との間を接続するＡＰＩ  ４０６と通信し、入力４０２から収集した情報および（任意で）入力４０２に関連付けられた情報をＡＰＩ  ４０６に提供することができる。本発明のいくつかの実施形態では、ＡＰＩ  ４０６は、オブジェクトの作業コピーを作成できる。矢印４５４で示すように、ＡＰＩ  ４０６はベスト・プラクティス・アナライザ４１２のベスト・プラクティス・エンジン４１０とインターフェースし、オブジェクトに関する情報および（オプションで）データベース４０８に関する情報をベスト・プラクティス・アナライザ４１２に提供することができる。矢印４５６で示すように、ベスト・プラクティス・アナライザ４１２は、ベスト・プラクティス情報をＡＰＩ  ４０６に返すために十分な情報が利用できることを決定することができる。ベスト・プラクティス情報は、矢印４５８で示すようにインターフェース４０４に返すことができる。インターフェース４０４は、矢印４６０で示すように、ベスト・プラクティス情報をディスプレイ４１４に表示するか、そうでなければ情報を（例えば、プログラムによって別のモジュールに）返すことができる。
【００４８】
代替方法として、ベスト・プラクティス・アナライザ４１２は、ＡＰＩ  ４０６に回答を返すために利用できる情報が不十分であることを決定し、矢印４６２で示すように、データベース４０８について既に設定されているものを決定するため（例えば、データベース内のオブジェクトについてのコンテクストを決定するため）に、データベース４０８にアクセスすることもできる。矢印４６４で示すように、情報はデータベース４０８からベスト・プラクティス・アナライザ４１２に返すことができる。ＡＰＩ  ４０６およびデータベース４０８から受信した情報に基づき、ベスト・プラクティス・アナライザ４１２は、データベース４０８のコンテクスト内の入力４０２として受信した提示された設定を分析し、かつ矢印４６６で示すようにベスト・プラクティス情報をＡＰＩ  ４０６に返すことができる。この情報は、ディスプレイ４１４に表示する（矢印４７０）ために、矢印４６８で示すように、インターフェース４０４に返すことができる。
【００４９】
代替方法として、ベスト・プラクティス・アナライザ４１２は、ＡＰＩからおよび任意でデータベース４０８から受信した情報がベスト・プラクティスを表すことを決定し、かつこの情報をＡＰＩ  ４０６に返す（矢印４７２）こともできる。ＡＰＩ  ４０６はデータベース４０８を更新し（矢印４７４）、作成、修正、またはその他の方法で操作されたデータベース・オブジェクトを永続化することができる。データベースが更新された（設定が永続化された）ことを示すメッセージは、ＡＰＩ  ４０６およびユーザー・インターフェース４０４を介して返すことができる。この時点で、このプロセスはセッションが終了するまで繰り返すことができる。
【００５０】
ベスト・プラクティス情報は、提示された設定がベストプラクティスを構成しない理由の説明、設定のあるべき値に関する推奨、ベスト・プラクティス推奨に関する詳細情報のある場所、などの情報を含むことができる。本発明のいくつかの実施形態では、ベスト・プラクティス推奨は上書きすることができる。代替方法として、ベスト・プラクティス推奨の一部は強制することもできる。
【００５１】
図５は、本発明のいくつかの実施形態に従って、データベース設計にベスト・プラクティスを組み込む方法の流れ図である。この方法の１つまたは複数のステップは、任意選択としたり、または省略したりすることができる。ステップ５０２において、入力を受信することができる。前述のように、入力はデータベースのオブジェクトについての提示された設定である場合がある。例えば、ユーザーが大型（１テラバイト）の事業体レベルの商品データベース用のバックアップ・ポリシーを設定しようとしていると想定する。この場合、入力は、データベースＡが毎日、太平洋標準時（ＰＳＴ）の午後３時に完全にバックアップされることを表すことができる。
【００５２】
ステップ５０４において、その入力情報はＡＰＩに送信することができる。例えば、データベースＡについてＰＳＴ３ｐｍの、１日１回のバックアップ時間／頻度をＡＰＩに送信することができる。ＡＰＩは、ＰＳＴ３ｐｍの、１日１回の設定で、バックアップ・オブジェクトのコピーを作成することができる。
【００５３】
ステップ５０６において、入力情報に関連付けられた情報が、ベスト・プラクティス・アナライザに送信されることになる。例えば、データベースＡについてＰＳＴ３ｐｍの、１日１回のバックアップ時間／頻度をベスト・プラクティス・アナライザに送信することができる。
【００５４】
ステップ５０８において、この入力情報の完全性を検査することができる。追加情報が不要である場合、この処理はステップ５１６に進むことができる。追加情報が必要である場合、処理はステップ５１２に進むことができる。例えば、受信された入力がデータベースのサイズ、データベースの性質、およびデータベースが変更される頻度に関連付けられた情報を含まない場合、ベスト・プラクティス・アナライザは、ベスト・プラクティス推奨を返すための情報が不十分であると決定することができる。ステップ５１２において、必要な情報を取り出す（ステップ５１４）ためにデータベースにアクセスすることができる。例えば、ステップ５１２において、データベースＡがアクセスされて、追加情報が決定することができる。データベースＡから返される（ステップ５１４）情報は、データベースＡがインターネットを介して購入のためにアクセス可能な、大量に取り扱われる（high- transaction-volume）、事業体レベルの、１テラバイトの商品データベースであることを示すことができる。
【００５５】
ステップ５１６において、ベスト・プラクティス・アナライザは入力情報およびデータベースから取り出された情報を分析することができる。例えば、ベスト・プラクティス・アナライザは、データベースＡについて、  ＰＳＴ３ｐｍの、１日１回のバックアップ時間／頻度という入力情報、およびデータベースから取り出された、インターネットを介して購入のためにアクセス可能な、大量に取り扱われる、事業体レベルの、１テラ・バイトの商品データベースという情報を分析することができる。ステップ５１８において、ベスト・プラクティス・アナライザは、ステップ５０２において受信された入力が（静的規則の）ベスト・プラクティスを含むかどうかを決定する、またはステップ５１４においてデータベースから取り出された情報のコンテクスト内で、ステップ５０２において受信された入力が（動的規則の）ベスト・プラクティスを備えることを決定することができる。ベスト・プラクティスを含む場合、処理はステップ５２４に進み、データベース内の適切なオブジェクトの特性が更新されるか、または（そのまま）設定され、処理はステップ５０２に戻る。ベスト・プラクティスを備えない場合、処理はステップ５２０に進み、ベスト・プラクティス情報がステップ５２０においてＡＰＩに戻され、かつステップ５２２においてインターフェースに戻される。この時点で、処理はステップ５０２に戻り、追加の入力を受信することができる。代替方法として、ベスト・プラクティス推奨を上書きし、データベース設計を提示された設定で更新することもできる。
【００５６】
前述の特性の例（すなわち、急速に拡大するデータベースのための頻繁な「ａｕｔｏｇｒｏｗ（自動拡大）」オプション、または大型で多用されるデータベースについてのＰＳＴ３ｐｍの完全バックアップの作成）は、一部のデータベースには適切であっても、他には不適切な設定の例であることが理解されるであろう。このような規則の分析には、ステップ５１２および５１４に関して前述したように、データベースがアクセスされる必要である場合がある。例えば、データベースを頻繁に自動拡大するように設定することは、必ずしもバッド・プラクティス（bad practice）にはならない。例えば、ＭｉｃｒｏｓｏｆｔのＳＱＬ  ＳＥＲＶＥＲ（登録商標）の頻繁な自動拡大機能は、比較的負荷の小さな小規模データベースには適切であるかもしれないが、データベースの規模が大きくなるほど、また負荷が大きくなるほど適切ではなくなり、ある時点で、頻繁な自動拡大は、ベスト・プラクティスとは見なされなくなる。
【００５７】
同様に、１日１回、ＰＳＴ３ｐｍでの完全パックアップの設定は、使用が少ないホーム・データベースにとっては完全に適切であり、かつ１日に数千回も更新される大型の公共データベースにとっては完全に不適切である場合がある。
【００５８】
他のデータベース・オブジェクト特性は、実質的にすべてのデータベースに適用することができる。ステップ５１２および５１４に関して前述したように、データベースへのアクセスは必要ではない場合がある。このような特性の一実施例は、ストアド・プロシージャと呼ばれる機能コードの要素の命名である場合がある。アクセス速度の理由により、「ｓｐ＿」で始まる名前をストアド・プロシージャに付けることはバッド・プラクティスと見なすことができる。
【００５９】
前述の実施形態はデータベース・システムのコンテクストの中で説明されているが、企図される本発明はこれに限られないことを理解されるであろう。例えば、前述の説明は、限定されないが、Ｍｉｃｒｏｓｏｆｔ  ＳＱＬ  Ｓｅｒｖｅｒ、Ｍｉｃｒｏｓｏｆｔ  Ａｃｃｅｓｓ、Ｏｒａｃｌｅ、ＩＢＭ  ＤＢ２、Ｉｎｆｏｒｍｉｘ、Ｓｙｂａｓｅ、ＭｙＳｑｌ、ＩｎｔｅｒＢａｓｅなどを含む任意のサーバー・プロダクトに適用できる。同様に、前述の説明はオブジェクト指向言語により実装されるものとしてのオブジェクトのコンテクストで述べられているが、企図される本発明はこれに限られるものではなく、任意のプログラミング技術またはプログラミング技術の組合せを、説明されたサーバー・プロダクトのコーディングおよび実装に使用することができる。
【００６０】
本明細書で説明した様々な技法は、ハードウェアまたはソフトウェア、もしくは適切な場合は両方の組合せに関連させて実装することができる。したがって、本発明の方法および装置、もしくはその特定の態様または一部は、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ、ハードドライブ、または他の任意のマシンが読み取り可能な記憶媒体などの具体的な媒体の中に具現化されたプログラム・コード（すなわち、命令）の形を取ることが可能であり、そこでは、コンピュータなどのマシンによりプログラム・コードが読み込まれて実行されるとき、そのマシンは本発明を実行する装置になる。プログラム可能なコンピュータ上でプログラム・コードが実行される場合、コンピューティング装置は、一般に、プロセッサ、（揮発性および不揮発性メモリならびに／または記憶要素を含む）プロセッサが読み取り可能な記憶媒体、少なくとも１つの入力装置、および少なくとも１つの出力装置を含む。本発明のドメイン固有のプログラミング・モデル態様の作成および／または実装を利用する、例えばデータ処理ＡＰＩまたは類似のものを使用することによる１つまたは複数のプログラムは、好ましくは、コンピュータ・システムと通信するために高レベルの手続きまたはオブジェクト指向型プログラミング言語によって実装される。ただし、望まれる場合は、プログラムはアセンブリすなわちマシン言語で実装することができる。いかなる場合も、言語はコンパイルされたまたは解釈された言語（interpreted language）にすることができ、かつハードウェア実装と結合することができる。
【００６１】
本発明は様々な図の実施形態と関連付けて説明されているが、他の類似の実施形態を使用することができ、または本発明の範囲を逸脱することなしに、本発明と同じ機能を実行するために、説明された実施形態に対して修正および追加を加えることができることが理解されるであろう。したがって、本発明は単一のどの実施形態にも限定されるものではなく、むしろ特許請求の範囲の中で解釈されるべきである。
【図面の簡単な説明】
【００６２】
【図１】本発明の態様を実装することができる例示的コンピューティング環境を示すブロック図である。
【図２】本発明の１つの実施形態に従って、データベース設計にベスト・プラクティスを組み込む方法の流れ図である。
【図３】本発明の１つの実施形態に従って、データベース設計にベスト・プラクティスを組み込むシステムのブロック図である。
【図４】本発明の１つの実施形態に従って、データベース設計にベスト・プラクティスを組み込むシステムの、システム内の情報の流れを示すブロック図である。
【図５】本発明の１つの実施形態に従って、データベース設計にベスト・プラクティスを組み込む別の方法の流れ図である。
【符号の説明】
【００６３】
１００    コンピューティング環境
１１０    コンピュータ
１２０    処理ユニット
１２１    システム・バス
１３０    システム・メモリ
１３４    オペレーティング・システム
１３５    アプリケーション・プログラム
１３６    他のプログラム・モジュール
１３７    プログラム・データ
１４０    取り外し不能な不揮発性メモリ・インターフェース
１４４    オペレーティング・システム
１４５    アプリケーション・プログラム
１４６    他のプログラム・モジュール
１４７    プログラム・データ
１５０    取り外し可能な不揮発性メモリ・インターフェース
１６０    ユーザー入力インターフェース
１６１    マウス
１６２    キーボード
１７０    ネットワーク・インターフェース
１７１    ローカル・エリア・ネットワーク
１７２    モデム
１７３    ワイド・エリア・ネットワーク
１８０    リモート・コンピュータ
１８２    グラフィックス・インターフェース
１８５    リモート・アプリケーション・プログラム
１８６    ビデオ・メモリ
１９０    ビデオ・インターフェース
１９１    モニタ
１９５    出力ペリフェラル・インターフェース
１９６    プリンタ
１９７    スピーカー
２００    ベスト・プラクティス・ガイド・ラインをデータベース設計に統合する例示的方法
３０２    データベース
３０４    オブジェクト
３０６    オブジェクト
３１０    入力
３１２    インターフェース
３１６    ベスト・プラクティス・ツール
３１８    エンジン
３２０ａ    規則
３２２    規則データベース
４０２    入力
４０４    インターフェース
４０８    データベース
４１４    ディスプレイ
【図１】
2006012148.tif 000006
【図２】
2006012148.tif 000007
【図３】
2006012148.tif 000008
【図４】
2006012148.tif 000009
【図５】
2006012148.tif 000010