サポート > リポジトリ > モデル項目の定義 > データベースの詳細
ja | en

モデル項目はデータベース内のテーブルのカラム(列)に関連付けられます。この詳細を設定することができます。

「モデル項目詳細定義>詳細>データベースの詳細」を指定することができます。

図1 モデル項目詳細定義

標準では有効となっています。この場合、モデルに対応するテーブルにカラム(列)が作成されます。
この設定を無効にすると、テーブルにカラムが用意されません。

計算によって導出される項目でデータベースに保存する必要がない、という場合に利用できます。

ご注意ください:データベースに保存しない項目は「検索項目として利用できない」「ソート項目として利用できない」という制約があります。また、一覧表示や集計ビューに適用すると(常に再計算されるため)パフォーマンス劣化の一因となります。

Wagby は次の条件に合致した項目は自動的に(テーブルに対する)インデックスを作成します。

データベースに対して CREATE INDEX... という命令を発行します。発行するタイミングは、外部データベースに対する初期データ読み込み (init_db.bat ファイル実行)時です。このときテーブル作成と同時にインデックスも作成します。

  • データベースに保存されている。
  • 検索項目として指定されている。
  • 数字型または日付型である。
  • 文字列型の場合、完全一致検索が指定されている。また、テキストエリアではない。
  • モデル参照項目のキー格納部分である。ただしチェックボックスを除く。

本設定を無効とすることで、インデックスの作成を抑制します。

リポジトリに指定する「整数型」や「文字列型」は、各データベースが用意するそれぞれの型へ自動変換されます。 例えば MySQL を用いた場合、文字列型は varchar(255) として扱われます。

この型を詳細に指定することができます。図2では、文字列型の項目について、テーブル定義の型を varchar(1024) へ変更した例です。

図2 型を指定する
開発時に利用する内蔵データベースは文字列型のサイズ制限がありません。しかし本番環境で利用するデータベースは文字列型のサイズを指定しています。長文を格納する場合はこのサイズを個別に設定するか、またはテキストエリアを使うなどして対応してください。
既存システムのテーブル定義を Wagby で再利用するような場合、テーブル定義側の型情報をこの欄へ転記してください。

モデル参照項目で、参照先モデルの主キーがテーブル定義の型を指定している場合、「参照先項目のテーブル定義の型と同じ設定を適用する」をチェックしてください。

図3 参照先項目のテーブル定義の型と同じ設定を適用する

本設定は、この項目がモデル参照の場合にのみ、チェックすることができます。チェックした場合、「テーブル定義の型」は入力不可となります。(本設定が優先されます。)

通常はモデル項目の「項目ID」(英語で表記)がテーブルのカラム名として用いられます。「物理カラム名」を指定することで、この動作を変更することができます。

図3 物理カラム名を指定する
既存システムのテーブル定義を Wagby で再利用するような場合、テーブル定義側のカラム名をこの欄へ転記してください。

複合キーモデル参照の場合7.9.1

複合キーモデルを参照する他モデル参照項目でも物理カラム名を任意に指定することができます。

物理カラム名項目の入力欄に、コンマ区切りで(複数の)物理カラム名を記入します。

一意制約を設定すると、同じデータを重複して登録できないようになります。図4にあるように、制約名を指定します。

図4 一意制約を指定する

複数項目の組み合わせ

複数の項目を組み合わせた一意制約を設定することもできます。図5,図6は「氏名」と「氏名かな」項目の二つで一意制約としています。このように同じ制約名をそれぞれの項目に設定します。

図5 氏名項目に指定した一意制約
図6 氏名かな項目に指定した一意制約

データベースによる挙動の違い

一意制約設定を行った項目の一部を未入力(null)として保存した場合の動作は、データベースによって異なります。

項目A, B, Cに一意制約を定義します。ここで A:aaa, B:null, C:ccc というデータを登録します。 その後、A:aaa, B:null, C:ccc のデータを再び登録しようとすると、次のようになります。

内蔵データベース(HSQLDB)、PostgreSQL
登録可能。
SQLServer
一意制約違反で登録に失敗する。

詳細は、ご利用のデータベースのマニュアルをお読みください。

生成されるDDL7.9

ここで指定した一意制約の設定は、次のファイルで確認できます。

wagbydesigner/webapps/wagbydesigner/WEB-INF/env/work/dbschema/createddl/モデルID.ddl

テキストエディタでファイルの内容を確認することができます。次の DDL が含まれています。

alter table "モデルID"
   add constraint jfcuk_モデルID_設定した名前 unique ("項目名");

init_db.bat を実行すると、この alter 文も同時に実行されます。

一意制約名の自動調整7.9

一意制約名は、利用するデータベースが許可する制約名の最大長に合わせて調整されます。

具体的には最大長を超える名前の場合、短縮されます。(短縮の結果、重複する場合には、これを重複しないように一意な名前を割り当てます。これはテーブル名や項目名でも同様です。)

Wagbyが内部で管理するロックキーのルールを変更することができます。通常、この設定を行うことはありません。

詳細は「ロックキー」をお読みください。

「業務ロジック > モデルをまたがる計算(トランザクション)」をお読み下さい。