Db2 オブジェクト命名規則

一般的な命名規則に加えて、いくつかの追加規則が特定の Db2 オブジェクトに適用されます。 この規則は、フェデレーテッド・データベースと非フェデレーテッド・データベースのデータベース、別名、インスタンス、オブジェクトの命名に影響します。

表 1. データベース、データベース別名、およびインスタンスの命名規則
オブジェクト ガイドライン
  • データベース
  • データベース別名
  • インスタンス
  • データベース名は、それらがカタログされるロケーションにおいて固有でなければなりません。 Linux® および UNIX 実装環境では、この場所はディレクトリー・パスですが、Windows 実装環境では論理ディスクです。
  • データベース別名は、システム・データベース・ディレクトリー内で固有でなければなりません。 新規データベースが作成されると、 デフォルトでは別名としてデータベース名が設定されます。 そのため、たとえその名前のデータベースが存在しないとしても、 データベース別名として既に存在する名前を使ってデータベースを作成することはできません。
  • データベース、データベース別名、グループ名およびインスタンス名の長さは 8 バイト以下である必要があります。
  • Windows では、インスタンスにサービス名と同じ名前を付けることはできません。
注: 通信環境でデータベースを使用する場合は、潜在的な問題を回避するために、データベース名に特殊文字 @、#、および $を使用しないでください。 さらに、これらの特殊文字はすべてのキーボードに共通ではないので、 他の言語でデータベースを使用する場合にも使用しないでください。
表 2. データベース・オブジェクトの命名規則
オブジェクト ガイドライン
  • 別名
  • 監査ポリシー
  • バッファー・プール
  • Columns
  • イベント・モニター
  • 索引
  • メソッド
  • ノード・グループ
  • パッケージ
  • パッケージ・バージョン
  • ロール
  • スキーマ
  • ストアード・プロシージャー
  • 表スペース
  • トリガー
  • トラステッド・コンテキスト
  • UDF
  • UDT
  • ビュー
  • これらのオブジェクトの ID の長さは、 SQL および XML の制限にリストされている長さ以下でなければなりません。 オブジェクト名。次のものを含めることができます。
    • 有効なアクセント付き文字 (ö など)
    • マルチバイト文字。マルチバイト・スペースは除く (マルチバイト環境の場合)
  • パッケージ名およびパッケージ・バージョンにはピリオド (.)、 ハイフン (-)、およびコロン (:) もまた含めることができます。

詳しくは、 IDを参照してください。

表 3. フェデレーテッド・データベース・オブジェクトの命名規則
オブジェクト ガイドライン
  • 関数マッピング
  • 索引仕様
  • ニックネーム
  • サーバー
  • タイプ・マッピング
  • ユーザー・マッピング
  • ラッパー
これらのオブジェクトの長さは、 SQL および XML の制限にリストされている長さ以下でなければなりません。 フェデレーテッド・データベース・オブジェクトの名前には、次のものも含めることができます。
  • 有効なアクセント付き文字 (ö など)
  • マルチバイト文字。マルチバイト・スペースは除く (マルチバイト環境の場合)

区切り ID およびオブジェクト名

キーワードを使用することができます。 キーワードが SQL キーワードとしても解釈されるコンテキストで使用される場合には、 それを区切り ID として指定する必要があります。

区切り ID を使用することによって、 上記の命名規則に違反するオブジェクトを作成することは可能ですが、 そのオブジェクトを続けて使おうとするとエラーになります。 例えば、名前に + または - 記号が含まれている列を作成し、 その列を索引の列として使おうとすると、索引の表を再編成する段階で問題が起きてしまいます。

スキーマ名の追加情報

  • ユーザー定義タイプ (UDT) は、 SQL および XML の制限にリストされている長さより長いスキーマ名を持つことはできません。
  • 次のスキーマ名は予約語なので、使用できません。SYSCAT、SYSFUN、SYSIBM、SYSSTAT、SYSPUBLIC。
  • 今後データベースをアップグレードする際に問題が起こることがないように、SYS で始まるスキーマ名を使用しないでください。 データベース・マネージャーでは SYS で始まるスキーマ名を使用して、トリガー、ユーザー定義タイプ、 またはユーザー定義関数を作成できません。
  • SESSION をスキーマ名として使用しないようお奨めします。 宣言される一時表は、SESSION によって修飾しなければなりません。 したがって、アプリケーションに永続表と同じ名前の一時表を宣言させることができますが、 その場合、アプリケーション・ロジックが複雑になりすぎる可能性があります。 宣言される一時表を扱う場合以外は、スキーマ SESSION の使用を避けてください。