db.xmlの作成と挙動について

db.xmlは、データを保存するブロック、またはパッケージの必須ファイルの1つで、1つまたは複数のデータベーステーブルを定義しています。

ブロックまたはパッケージのインストール時にこの db.xml を参考にブロック、もしくはパッケージ用のテーブルが作成されます。このファイルはAXMLS formatで書かれています。

db.xml の勉強方法でオススメの方法の1つとして、マーケットプレイス場の他のアドオンを参考にされるのもいいでしょう。

このガイドはAdoDB XMLスキーマを理解する方向けに、利用できるタイプとキーワードを解説しています。

STEP 1: ベースの作成

基本的なブロックのサンプルをダウンロードして下さい。

次のコードをベースとしてファイルを作り始めましょう。

<?xml version="1.0"?>
<schema version="0.3">
    <table name="btBasicTest">
        <field name="bID" type="I">
            <key ></key>
            <unsigned ></unsigned>
        </field>
        ......
        ......
    </table>
</schema>

 このサンプルでは、データベーステーブルが "bBasicTest"として定義されています。自作ブロックのコントローラー(controller)ファイルで定義されているハンドル (handle) に従って名前を変更する必要があります。

 コントローラーの btTable プロパティーで指定されているテーブルはbIDをプライマリキーとして持つ必要があります。型は整数(integer)に設定します(オートインクリメントは設定してはいけません)。このキーはconcrete5のコアのBlocksテーブルとマッピングされ、あなたのブロックに固有のデータとconcrete5がブロックについて持っているデータ(メタデータ、位置、バージョン等)と関連づけるのに使われます。

STEP2: 自分のブロック用にカスタマイズ

次に、この外殻に中身を入れていきます。あなたのブロックで必要なフィールドを追加します。例えば、"Name"(名前)を取得、保存、表示したい場合は、次のようなXML構造を追加するとよいでしょう。

<field name="name" type="C" size="255">
</field>

※ 例に示されているように、XMLファイルの各レベルはインデントするのが適切です。

下記の表は使用できるデータベース構造を定義するのに使えるフィールドタイプとキーワード一覧です。

参考:フィールドタイプ一覧

タイププリフィクス説明
C 可変長文字列。255文字までの制限。
X 大きな可変長文字列。4000文字までの制限(Oracleとの互換性のため)。
XL Oracleのための最も長い可変長文字列型。キャラクタ・ラージ・オブジェクトを返す。
C2 マルチバイト可変長文字列
X2 大きなマルチバイト可変長文字列
B BLOB(バイナリ・ラージ・オブジェクト)
D 日付(いくつかのデータベースはこの型をサポートしていないので、其の場合はdatetime型を返す)
T 日付またはタイムスタンプ
L 真偽値(0または1)を格納するための整数フィールド
I 整数(I4にマップされる)
I1 1バイト整数
I2 2バイト整数
I4 4バイト整数
I8 8バイト整数
F 浮動小数点数
N アンパック浮動小数点数

参考:MySQLと対応した db.xml フィールドタイプ一覧

db.xml MySQL
C VARCHAR
XL LONGTEXT
X TEXT
C2 VARCHAR
X2 LONGTEXT
B LONGBLOB
D DATE
TS DATETIME
T DATETIME
I4 INTEGER
I INTEGER
I1 TINYINT
I2 SMALLINT
I8 BIGINT
F DOUBLE
N NUMERIC

参考:フィールドタイプ修飾子

キーワード説明
AUTOINCREMENT オートインクリメント数値。利用できない場合はトリガーをエミュレートします。NOTNULLを同時に指定してください。
KEY プライマリキーフィールド。NOTNULLを同時に指定してください。複合キーをサポートしています。
PRIMARY KEYと同じ。
DEF DEFAULTの略語。
DEFAULT デフォルト値。' SYSDATE 'のように前後がスペースが付いていない場合は自動的に引用符で囲まれます。
NOTNULL NULLを許可しない
DEFDATE 現在の日付を取得しデフォルト値として設定する。
DEFTIMESTAMP 現在の日付時刻を取得しデフォルト値として設定する。
NOQUOTE デフォルトの文字列の値が自動で引用符で囲まれないようにします。
CONSTRAINTS フィールド定義の最後に追加の制約条件を指定することが可能。

サンプルコード

db.xmlファイルの作例が下記となります。サンプルを参考に自作ブロック開発をしてみてください。

<?xml version="1.0"?>
<schema version="0.3">
    <table name="btBasicTest">
        <field name="bID" type="I">
            <key ></key>
            <unsigned ></unsigned>
            <default value="0"/>
        </field>
        <field name="content" type="X2">
        </field>
    </table>
</schema>

 

翻訳元:Creating and Working with db.xml Files