4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MendixのDBの中身を見てみると分かること

Last updated at Posted at 2019-01-06

こちらの記事でMendixのDBの中身を直接見る方法を書きました。
実際にDBの中身を見てみると、いろいろ分かることがあります。

全てのEntityやAttributeがあるわけじゃない

非永続Entity(Non-Persistent Entitiy)やCalculate項目はDB上には存在しません。
db-2-1.png
db-2-2.png

そもそも

  • 非永続Entityは一時的な用途に使うためのもの。メモリ上にのみ存在
  • Calculate項目はRetriveされた時にMicroflowで計算される項目

なので、当然と言えば当然ではあります。

内部IDが払い出されている

DomainModelのEntityにはありませんでしたが、テーブルの方にはID列があり、ユニークな値を持っています。
db-2-3.png
このIDはオブジェクトを生成したタイミングでMendixによって採番されますが、その採番ルールは不明です。(なんとなく連番になっているように見えるが、その保証は無い)
従って、Mendixの内部DBのテーブルに対して外からSQL等でレコードを直接INSERTすることはできません。必ずMendixのロジックを介してレコードを生成する必要があります。

Associationは関連テーブル

Associationは同名の関連テーブルになります。
db-2-4.png
db-2-5.png

日時はUTC

このドキュメントに書いてあるように、Date and time型のAttributeはUTCとして格納されます。

The platform stores all dates in the UTC time zone.

db-2-6.png
db-2-7.png

継承しているEntityはどうなっているか

DomainModelの特徴の一つである継承はRDBではどのように展開されているのでしょうか。
例えば以下のようにParentを継承した子Entityが2つあり、それぞれに1件ずつレコードを登録したとします。
db-2-8.png
親Entityのテーブルを見てみると、子Entityに登録したレコードがそれぞれ存在します。
また、「submetaobjectname」という列が存在します。どの子Entityのオブジェクトか、を示す列です。
db-2-9.png
子Entityのテーブルを見てみると、親Entityのレコードと同じID値を持っていることが分かります。
レコードとしては分かれているけれども、オブジェクトとしては同一ということなのでしょう。
db-2-10.png
db-2-11.png

参考

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?