前置き
Pleasanterは業務に合わせて必要な項目を追加変更して、柔軟にテーブルを自由に作成できますが、DBってどんな構成になっているのか気になりませんか?今回は、Pleasanterのテーブル設定とDBの関係について整理してみたいと思います。
テーブルを用意
実際にPleasanterのテーブルを用意して確認してみたいと思います。
1テーブル目
記録テーブルを用意、分類A/B/Cを有効化して以下のように設定しています
カラム名 | 表示名 | 値 |
---|---|---|
分類A | 動物 | ライオン |
分類B | 野菜 | 白菜 |
分類C | 都道府県 | 神奈川県 |
2テーブル目
こちらも記録テーブルで分類A/B/Cを有効化し、以下のように設定しています
カラム名 | 表示名 | 値 |
---|---|---|
分類A | 昆虫 | カブトムシ |
分類B | 果物 | リンゴ |
分類C | 国名 | イギリス |
DBを見てみる
記録テーブルなので、DBではResultsテーブルを参照します。
中を見てみると、ClassAからClassZまですでに項目が設定されていることがわかると思います。(NumやDateなども同様に)
その上で、今回作成したテーブルのデータを参照してみます。SiteId=1678が1テーブル目、1680が2テーブル目です。項目ClassAを見ると、1テーブル目のレコードはライオン、2テーブル目レコードにはカブトムシが設定されています。
Pleasanter上のテーブルでは別々のテーブルですが、DB上では同じテーブル(Results)の同じ項目を共有していることがわかります。
テーブルの設定はどこに?
そうなってくると、画面の表示名(今回でいうところの、「動物」や「昆虫」)はどこで制御しているのでしょうか?
DBのSiteテーブルを参照してみます。ここの項目SiteSettingsに注目。Jsonファイルが格納されているので、中を覗いてみます。
SiteId = 1678のSiteSettingsです。LabelTextに各項目の表示名が設定されていることがわかります。ここでテーブルの設定情報を管理しています。Siteテーブルの情報と、Resultsのデータを組み合わせることで、Pleasanterの画面は構成されています。
(ちなみに、サイトパッケージの元となる情報がこのSiteSettingsになります。)
絵にまとめてみる
Resutsのテーブルデータと、SitesのSiteSettingsを組み合わせることで、Pleasanterのテーブルを表現しています。
ちなみに
Pleasanterのテーブルの管理から、ある項目を”無効化”した場合、既に登録してあったデータってどうなるの?っと、よく聞かれるのですが、この仕組みを踏まえると、イメージが付きやすいと思います。
やってみます。
1つ目のテーブル(SiteId = 1678)の項目”動物”(分類A)を無効にします。
無効化した上で、SiteテーブルのSiteSettingsを見てみます。
EditorColumnHashがエディタで有効化されている項目を司っているのですが、ClassAが無くなっていることがわかります。(ちなみに、Columns項目は初期化されていないため、表示名の設定自体は残ります)
DBを見てみます。
このように、テーブルの管理から無効化するだけで、DBのデータが削除されることはありません。つまり、再度有効化した場合、登録データもそのままだということです。
補足
今回は、記録テーブルで試してみましたが、期限付きテーブルの場合、DBに保存されるテーブルはIssuesになります。期限付きの場合はResultsをIssuesによみかえてみてくださ