XMLDBエディタ (Dev docs)

提供:MoodleDocs
移動先:案内検索

場所: サイト管理 > 開発 > XMLDBエディタ


  • XMLDBエディタは、moodle がデータベーステーブルをどのようにセットアップするかを指定する .xml ファイルを作成するためのツールです。以前は、開発者は mysql と postgres のために別々の .sql インストールファイルを作成する必要がありましたが、今ではデータベースニュートラルなファイルだけが必要となり、より多くのデータベースをサポートできるようになりました。
  • テーブル/フィールド/キー/インデックスの編集がほとんど不要になり、開発者はXMLファイルや手動編集によるエラーと戦う代わりに、コーディングや改良に時間を使うことができます (もちろん、開発者はビール、ダンス、本、音楽など、好きなようにその余暇を使うことができます...) 。 ;-)
  • Moodle の各 db ディレクトリの下にある新しい install.xml ファイルは、いくつかのクリックとキーストロークで編集することができます (そして、私たちはそれを推奨します) 。これらの install.xml には、サポートされる各 RDBMS に必要な特定のオブジェクトを生成するために必要なすべての情報が含まれています。
  • 注: ファイルを適切に処理するために、ウェブサーバは install.xml ファイルが存在するすべての db ディレクトリへの書き込みアクセスが必要です (もちろん、ファイル自体への書き込みも可能です)。load または create のリンクをクリックできない場合は、/db ディレクトリが作成されていないか、ウェブサーバから書き込みができない状態であることを意味します。

クイックスタート

XMLDB エディタを使用して新しいプラグインのテーブルを作成するには:

moodle ver 2.8 のヒント: mod/mymodule/ フォルダ内に "version.php" と "settings.php" ファイル、および "WRITE PERMISSION" を持つ "db" フォルダが必要だと思われます。version.php と settings.php の2つのファイルは、XMLDB エディタが悪用されないようにするためのセキュリティのためだと思います。また、settings.php と version.php はある程度記入する必要があると思われます。以上のことができれば、"mod/mymodule/" が見つかり、"create" リンクをクリックできるようになるはずです。

  1. プラグインディレクトリの下に、ディレクトリを作成します。
    db
    
    例えば、以下のディレクトリを作成します。
    mod/mymodule/db
    
    ウェブサーバがこのディレクトリに書き込み可能であることを確認してください。
  2. Moodleで、サイト管理 -> 開発 -> XMLDBエディタ を開きます。
  3. XMLDB の場所のリストに
    mod/mymodule/db
    
    が表示され、 Create リンクがクリックできるようになったはずです。 (ディレクトリは表示されるが、どのリンクもクリックできない場合、ウェブサーバがこのディレクトリに書き込みアクセスできることを確認してください!)
  4. Create をクリックします。(これは空の install.xml ファイルを作成します)
  5. Load をクリックします。(install.xml ファイルの内容がメモリに読み込まれます)
  6. Edit をクリックします。
  7. これで実際に XMLDB エディタを使用して、プラグイン用のテーブルを作成・編集できるようになりました。
  8. 終了したら、XMLDB の場所のリストに戻るまで、BackBack to Main をクリックし続け、Save をクリックしてください。

これは install.xml ファイルを作成し、version.php ファイルと一緒にデータベースにテーブルをロードするために使用することができます。 詳細は プラグインデータベーステーブルのインストールおよびアップグレード を参照してください。

プラグインを最初にインストールした後、プラグインのテーブル構造を更新するためには、モジュールの db フォルダに upgrade.php ファイルを手動で作成する必要があります。upgrade.php ファイルは、以下のような感じで始まります:

<?php

function xmldb_mymodule_upgrade($oldversion) {
    global $CFG;

    $result = TRUE;

// Insert PHP code from XMLDB Editor here

    return $result;
}
?>

'// Insert PHP code here' ビットのコードを取得するには、XMLDB エディタを開き、関連する install.xml ファイルを読み込みます。

'View PHP Code' オプションを選択し、生成されたコードをコピー&ペーストしてください。

xmldbeditor-showphpcode.png

使用方法

  • XMLDB エディタは非常に使いやすいので、ここで完全なガイドをする必要はないでしょう。しばらく使ってみて、どのように動作するか、install.xml ファイルをどのように変更するかを確認することを強くお勧めします。
  • 上下の構造で構成されており、新しい XMLDB ファイルを ロード (または 作成) するところから始めます。そして、そのファイルを 編集 すると、その 大まかな構造 が表示されます。この構造は、テーブルステートメント の2種類の要素を持ち、XMLDB エディタでは、これらを簡単に 追加編集削除移動 することができます。また、テーブルの初期作成のために、小さいながらも効果的な 逆引き ツールが開発されており、DB から XMLDB エディタに任意のテーブルを後付けすることができます (MySQLのみ) 。
  • テーブルを編集している間、その フィールドキーインデックス を見ることができ、それらを簡単に扱うことができます。いくつかのフィールドは編集不可であることに注意してください。これは、それらが何らかの方法で使用されているためで(あるキーやインデックスの一部)、そのことについて警告を出すというものです。
  • フィールドは編集可能で、nametypelengthdecimalsnull-abilitydefaults などの指定が可能です。キーインデックス についても全く同じです。
  • 文を編集するときは、"文の集合体" として考える必要があります。一度、興味のある タイプ (今のところ挿入のみ可能) と テーブル を選択すれば、正確な値を簡単に導入することができ、開発中に多くの文章がある場合は、簡単に 複製 して速度を上げることができます。文章を 編集 したり 削除 することも簡単にできます。
  • 興味深い機能として、すべての XMLDB エディタページで、変更する項目(テーブル、インデックス、キー、フィールド、ステートメント)に関する コメント を入力することが可能です。他の開発者が DB モデルについてもう少し理解するのに役立つと確信して、お好きなようにお使いください。
  • フィールドを enum として定義する場合は、enum のオプションをカンマ区切りで指定し、各オプションをシングルクォートで囲む必要があります。 例:
    'option1','option2','option3'
    
    しかし、Moodle 2.0 では enum は非推奨とされていますので、おそらく enum 型を完全に避ける方が良いでしょう。

規約

データベース構造ガイドラインとは別に、さらにいくつかの規約を守る必要があります:

  1. 名前について:
    1. すべて小文字の名前(テーブル、インデックス、キー、フィールド)です。
    2. テーブル名およびフィールド名には、a-z、0-9、_ のみを使用してください。最大28文字です。
    3. XMLDB ファイルのキーとインデックス名は、キー/インデックスに存在するフィールド名を "-" (マイナス) 文字で連結して形成する必要があります。
    4. 主キーは常に "primary" という名前でなければなりません (これは以前の慣例に対する一つの例外です) 。
    5. 予約語を完全に避けることを強く推奨します。今、いくつかあるのは分かっていますが、次のリリースでは完全に出ているはずです。
  2. NULLS について
    1. すべてのフィールドを 愚かな デフォルト値 '' (空文字列) で NOT NULL として作成しないようにします。テーブルを作成するために使用される基本的なコードは、適切に処理されますが、XMLDB の構造は REAL である必要があります。詳しくは 問題のページ をご覧ください。
  3. FOREIGN KEYS について
    1. XMLDB ファイルのテーブルの下に、既存の 外部キー (FK) を適切に定義する必要があります。そうすることで、構造をよりよく理解することができ、将来的にはよりよい制約のあるシステムに進化させることができますし、適切なインデックスを作成するために必要な情報を基礎となるコードに提供することができます。
    2. フィールドの組み合わせを FK として定義すると、そのフィールドにインデックスを作成する必要がないことに注意してください。コードが自動的にやってくれます!
    3. 規約 1.3 を尊重してください。
  4. UNIQUE KEYS について
    1. フィールドを ユニークキー (UK) として宣言するのは、それらが1つの FK のターゲットとして使用される場合のみです。代わりにユニークインデックスを作成します。
    2. 規約 1.3 を尊重してください。

関連項目