こんにちはナクラです。
暑くなったり、少しすごしやすくなったりと気候がころころ変わるこの頃ですが、
徐々に真夏に近づいているのを実感する毎日ですね。
さて、今日はLiferayのデータベースのテーブルについて書きたいと思います。
Liferayでは253ものデータベーステーブルが用意されています。
なので、全体にたいしてER図を描くのはあまり現実的ではないのです。
また、ユーザインタフェース上の設定項目が実際にはどのテーブルに登録されているのかをまとまって見られる資料もなかなか良いものがないので、
ここで、個別に確認していってみようと思います。
今回はユーザの設定画面について確認していくことにしましょう。
ユーザの情報はコントロールパネルの
[ユーザ] > [ユーザと組織] の項目から確認できます。
個別のユーザの情報を見ると
次の図のようになっています。
ユーザ情報の画面では、このように
・共通タブ
・連絡先タブ
・表示設定タブ
の3つのタブがありますので、一つづつ見ていきましょう。
共通タブ
まず共通タブから見ていきます。
共通タブの中にもいくつかの項目があります。
- 情報
- 組織
- メンバーシップ
- ロール
- プロフィールとダッシュボード
- パスワード
- アプリ
それぞれを見ていきましょう。
【情報】
この画面の設定項目の大半は
ユーザ情報のメインのデータであるUser_テーブルに含まれている情報です。
(User_テーブルは最後に"_"がついているのに注意してくだあい。
よくつけ忘れてテーブルがない!と慌ててしまうことがあります。)
ただし、
性別、生年月日、サフィックスについては
Contact_テーブルに含まれる情報になっています。(これも"_"がついています)
また、
詳細情報のセクションについては各設定項目でテーブルが違っています。
カテゴリについては
AssetEntryAssetCategoryRelテーブル
+--------------------------------------+-------------+------+-------+-----------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------------------------------+-------------+------+-------+-----------+-------+
| mvccVersion | bigint(20) | NO | | 0 | |
| assetEntryAssetCategoryRelId | bigint(20) | NO | PRI | NULL | |
| assetEntryId | bigint(20) | YES | MUL | NULL | |
| assetCategoryId | bigint(20) | YES | MUL | NULL | |
| priority | int(11) | YES | | NULL | |
+-------------------------------------+--------------+------+--------+----------+-------+
タブについては
AssetEntries_AssetTagsテーブル
+---------------+------------+-------+-------+-----------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+------------+-------+-------+-----------+-------+
| companyId | bigint(20) | NO | MUL | NULL | |
| entryId | bigint(20) | NO | PRI | NULL | |
| tagId | bigint(20) | NO | PRI | NULL | |
+---------------+------------+-------+-------+-----------+-------+
に情報が登録されます。
ユーザのuserIdの値が
AssetEntryAssetCategoryRelではassetEntryIdのカラムに
AssetEntries_AssetTagsではentryIdのカラムに
設定されます。
カルタムフィールドについてはExpandoという機構を利用していますが、
これについては別の機会にお話したいと思います。
【組織】
ユーザが所属する組織の情報については
Users_Orgsテーブル
+-------------------+-------------+-------+------+-----------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+-------------+-------+------+-----------+-------+
| companyId | bigint(20) | NO | MUL | NULL | |
| organizationId | bigint(20) | NO | PRI | NULL | |
| userId | bigint(20) | NO | PRI | NULL | |
+--------------------+------------+------+--------+----------+-------+
に設定されています。
【メンバーシップ】
ユーザが所属するサイトの情報については
Users_Groupsテーブル
+---------------+--------------+------+-------+-----------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-------+-----------+-------+
| companyId | bigint(20) | NO | MUL | NULL | |
| groupId | bigint(20) | NO | PRI | NULL | |
| userId | bigint(20) | NO | PRI | NULL | |
+---------------+--------------+------+-------+-----------+-------+
に設定されています。
ユーザが所属するユーザグループの情報については
Users_UserGroupsテーブル
+-----------------+-------------+-------+-----+-----------+--------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+-------------+-------+------+----------+--------+
| companyId | bigint(20) | NO | MUL | NULL | |
| userId | bigint(20) | NO | PRI | NULL | |
| userGroupId | bigint(20) | NO | PRI | NULL | |
+-----------------+-------------+-------+------+----------+--------+
に設定されています。
【ロール】
ユーザが割り当てられているロールの情報については
Users_Rolesテーブル
+---------------+-------------+-------+-------+-----------+--------+
| Field | Type | Null | Key | Default | Extra |
+---------------+-------------+-------+-------+-----------+--------+
| companyId | bigint(20) | NO | MUL | NULL | |
| roleId | bigint(20) | NO | PRI | NULL | |
| userId | bigint(20) | NO | PRI | NULL | |
+---------------+-------------+-------+-------+-----------+--------+
に設定されています。
【プロフィールとダッシュボード】
この項目からはユーザ個人の公開サイト(プロフィール)、非公開サイト(ダッシュボード)へ移動できます。
ユーザの個人サイトの情報は
Group_テーブル
+----------------------------------+-----------------+------+---------+-----------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------------------------+-----------------+------+---------+-----------+-------+
| mvccVersion | bigint(20) | NO | | 0 | |
| uuid_ | varchar(75) | YES | MUL | NULL | |
| groupId | bigint(20) | NO | PRI | NULL | |
| companyId | bigint(20) | YES | MUL | NULL | |
| creatorUserId | bigint(20) | YES | | NULL | |
| classNameId | bigint(20) | YES | MUL | NULL | |
| classPK | bigint(20) | YES | | NULL | |
| parentGroupId | bigint(20) | YES | | NULL | |
| liveGroupId | bigint(20) | YES | MUL | NULL | |
| treePath | longtext | YES | | NULL | |
| groupKey | varchar(150) | YES | | NULL | |
| name | longtext | YES | | NULL | |
| description | longtext | YES | | NULL | |
| type_ | int(11) | YES | MUL | NULL | |
| typeSettings | longtext | YES | | NULL | |
| manualMembership | tinyint(4) | YES | | NULL | |
| membershipRestriction | int(11) | YES | | NULL | |
| friendlyURL | varchar(255) | YES | | NULL | |
| site | tinyint(4) | YES | | NULL | |
| remoteStagingGroupCount | int(11) | YES | | NULL | |
| inheritContent | tinyint(4) | YES | | NULL | |
| active_ | tinyint(4) | YES | | NULL | |
+----------------------------------+------------------+-------+-------+------------+-------+
に設定されています。
このテーブルのClassPKカラムの値にユーザのuserIdと同じ値が設定されているものがユーザ個人のサイトになります。
【パスワード】
パスワードについては
User_テーブルのpassword_カラムに値が登録されています。
【アプリ】
デフォルトでは設定されていません。
連絡先タブ
次に連絡先タブについてみていきましょう。
連絡先タブには
- 住所
- 連絡先情報
の2つの項目があります。
【住所】
ユーザの住所情報については
Addressテーブル
に登録されます。
【連絡先情報】
ユーザの連絡先情報については、いろいろな項目があります。
各々の設定については以下のようになっています。
- 電話番号 :Phoneテーブル
- 追加メールアドレス :EmailAddressテーブル
- Webサイト :Websiteテーブル
- Jabber :Contact_テーブルのjabberSnカラム
- Skype :Contact_テーブルのskypeSnカラム
- SMS :Contact_テーブルのsmsSnカラム
- Facebook :Contact_テーブルのfacebookSnカラム
- Twitter :Contact_テーブルのtwitterSnカラム
- OPEN ID :User_テーブルのopenIdカラム
表示タブ
最後の表示設定タブについてみていきましょう。表示設定タブには
- 通知設定
- 表示設定
の2つの項目があります。
【通知設定】
ユーザの通知設定情報については
AnnouncementsDeliveryテーブル
+----------------+---------------+-------+--------+----------+--------+に設定されています。
| Field | Type | Null | Key | Default | Extra |
+----------------+---------------+-------+--------+----------+--------+
| deliveryId | bigint(20) | NO | PRI | NULL | |
| companyId | bigint(20) | YES | MUL | NULL | |
| userId | bigint(20) | YES | MUL | NULL | |
| type_ | varchar(75) | YES | | NULL | |
| email | tinyint(4) | YES | | NULL | |
| sms | tinyint(4) | YES | | NULL | |
| website | tinyint(4) | YES | | NULL | |
+----------------+---------------+-------+--------+---------+---------+
表示設定の項目で
共通は"general"
ニュースは"news",
テストポートレットは"test"
がtype_に設定されます。
【表示設定】
標準時についてはUser_テーブルのtimezoneIdカラム
あいさつ文についてはUser_テーブルのgreetingカラム
に設定されています。
以上で、ユーザ情報の設定項目に対応するデータベースのテーブル情報について
確認できました。
ユーザに関連する情報だけでも、さまざまなテーブルが利用されていることがわかりましたね。
Liferayではデータの追加・削除はデータベースを直接操作するのが推奨されていない理由が体感していただけたのではないでしょうか。
それでは、次回はまた別の設定項目についてみていきたいと思います。