-- --------------------------------------------------------------------------------------------------
-- 基本テーブル作成スクリプト
-- ベースシステム(フレームワーク)で最小限必要なテーブルの作成、初期データの登録を行う
-- --------------------------------------------------------------------------------------------------

-- システム設定マスター
-- システムの動作に影響する設定を管理する
DROP TABLE IF EXISTS _system_config;
CREATE TABLE _system_config (
    sc_id                VARCHAR(40)    DEFAULT ''                    NOT NULL,      -- ID(Key)
    sc_value             VARCHAR(40)    DEFAULT ''                    NOT NULL,      -- 値
    sc_name              VARCHAR(60)    DEFAULT ''                    NOT NULL,      -- 名称
    sc_description       VARCHAR(80)    DEFAULT ''                    NOT NULL,      -- 説明
    sc_index             INT            DEFAULT 0                     NOT NULL,      -- ソート用
    PRIMARY KEY          (sc_id)
) TYPE=innodb;
INSERT INTO _system_config (sc_id,                         sc_value, sc_name,                sc_index) VALUES
('system_name',                 'Magic3',     'システム名称',                    0),
('db_version',                  '2008050501', 'DBバージョン',                    1),
('server_id',                   '',           'サーバ識別用ID',                  2),
('default_lang',                'ja',         'デフォルト言語',                  3),
('multi_language',               '0',          '多言語対応',                      4),
('csv_upload_encoding',         'SJIS-win',   'CSVアップロードエンコード',       5),
('csv_download_encoding',       'SJIS-win',   'CSVダウンロードエンコード',       6),
('csv_delim_code',              ',',          'CSV区切りコード',                 7),
('csv_nl_code',                 '\r\n',       'CSV改行コード',                   8),
('csv_file_suffix',             '.csv',       'CSVファイル拡張子',               9),
('permit_init_system',          '0',          'システム初期化許可',              10),
('permit_change_lang',          '1',          '処理言語変更許可',                11),
('permit_detail_config',        '0',          'システム詳細設定許可',            12),
('regenerate_session_id',       '0',          'セッションID毎回更新',            13),
('script_cache_in_browser',     '1',          'ブラウザのスクリプトキャッシュ',  14),
('site_in_public',              '1',          'サイト公開',                      15),
('site_access_exception_ip',    '',           'サイトアクセス制御なしIP',        16),
('toppage_image_path',          '',           'トップページ画像パス',            17),
('mobile_encoding',             'SJIS',       '携帯用画面エンコード',            18),
('install_dt',                  '',           'インストール日時',                19);

-- 多言語対応文字列マスター
DROP TABLE IF EXISTS _language_string;
CREATE TABLE _language_string (
    ls_id                VARCHAR(40)    DEFAULT ''                    NOT NULL,      -- ID(Key)
    ls_language_id       VARCHAR(2)     DEFAULT ''                    NOT NULL,      -- 言語ID
    
    ls_value             TEXT           DEFAULT ''                    NOT NULL,      -- 値
    ls_name              VARCHAR(60)    DEFAULT ''                    NOT NULL,      -- 名称
    ls_description       VARCHAR(80)    DEFAULT ''                    NOT NULL,      -- 説明
    ls_index             INT            DEFAULT 0                     NOT NULL,      -- ソート用
    PRIMARY KEY          (ls_id,        ls_language_id)
) TYPE=innodb;
INSERT INTO _language_string
(ls_id,               ls_language_id, ls_value,       ls_name,              ls_index) VALUES
('widget_alias_name', 'ja',           'ウィジェット', 'ウィジェットの別名', 0);

-- 言語マスター
DROP TABLE IF EXISTS _language;
CREATE TABLE _language (
    ln_id                VARCHAR(2)     DEFAULT ''                    NOT NULL,      -- 言語ID
    ln_name              VARCHAR(20)    DEFAULT ''                    NOT NULL,      -- 言語名称
    ln_name_en           VARCHAR(20)    DEFAULT ''                    NOT NULL,      -- 英語名称
    ln_priority          INT            DEFAULT 0                     NOT NULL,      -- 優先順位
    PRIMARY KEY  (ln_id)
) TYPE=innodb;
INSERT INTO `_language` (`ln_id`, `ln_name`, `ln_name_en`, `ln_priority`) VALUES
('ja', '日本語',     'Japanese', 0),
('en', '英語',       'English',  1),
('de', 'ドイツ語',   'German',   2),
('fr', 'フランス語', 'French',   3),
('es', 'スペイン語', 'Spanish',  4),
('it', 'イタリア語', 'Italian',  5),
('zh', '中国語',     'Chinese',  6),
('ko', '韓国語',     'Korean',   7),
('ru', 'ロシア語',   'Russian',  8),
('el', 'ギリシャ語', 'Greek',    9),
('la', 'ラテン語',   'Latin',    10),
('ms', 'マレー語',   'Malay',    11),
('ar', 'アラビア語', 'Arabic',   12);

-- 運用時エラーメッセージトラン
DROP TABLE IF EXISTS _error_log;
CREATE TABLE _error_log (
    el_serial            INT            AUTO_INCREMENT,                              -- レコードシリアル番号
    el_type              VARCHAR(5)     DEFAULT ''                    NOT NULL,      -- メッセージタイプ(info=情報,warn=警告,error=通常エラー,fatal=致命的エラー)
    el_message           TEXT           DEFAULT ''                    NOT NULL,      -- エラーメッセージ
    el_method            TEXT           DEFAULT ''                    NOT NULL,      -- 実行メソッド
    el_access_log_serial INT            DEFAULT 0                     NOT NULL,      -- アクセスログシリアル番号
    el_dt                TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- 記録日時
    PRIMARY KEY          (el_serial)
) TYPE=innodb;

-- デバッグ用メッセージトラン
DROP TABLE IF EXISTS _debug;
CREATE TABLE _debug (
    db_serial            INT            AUTO_INCREMENT,                              -- レコードシリアル番号
    db_message           TEXT           DEFAULT ''                    NOT NULL,      -- メッセージ
    db_method            TEXT           DEFAULT ''                    NOT NULL,      -- 実行メソッド
    db_access_log_serial INT            DEFAULT 0                     NOT NULL,      -- アクセスログシリアル番号
    db_time              VARCHAR(10)    DEFAULT ''                    NOT NULL,      -- 起動からの経過時間(秒)
    db_dt                TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- 記録日時
    PRIMARY KEY          (db_serial)
) TYPE=innodb;

-- バージョン管理マスター
DROP TABLE IF EXISTS _version;
CREATE TABLE _version (
    vs_id                VARCHAR(40)    DEFAULT ''                    NOT NULL,      -- ID(Key)
    vs_value             VARCHAR(20)    DEFAULT ''                    NOT NULL,      -- 値
    vs_name              VARCHAR(60)    DEFAULT ''                    NOT NULL,      -- 名称
    vs_description       VARCHAR(80)    DEFAULT ''                    NOT NULL,      -- 説明
    PRIMARY KEY          (vs_id)
) TYPE=innodb;
INSERT INTO _version (vs_id,         vs_value,     vs_name)
VALUES               ('basic_table', '2008013001', '基本テーブルのバージョン');

-- 汎用キー値型パラメータマスター
DROP TABLE IF EXISTS _key_value;
CREATE TABLE _key_value (
    kv_serial            INT            AUTO_INCREMENT,                              -- レコードシリアル番号
    kv_id                VARCHAR(40)    DEFAULT ''                    NOT NULL,      -- ID(Key)
    kv_history_index     INT            DEFAULT 0                     NOT NULL,      -- 履歴管理用インデックスNo(0～)
    
    kv_value             TEXT           DEFAULT ''                    NOT NULL,      -- 値
    kv_name              VARCHAR(60)    DEFAULT ''                    NOT NULL,      -- 名称
    kv_description       VARCHAR(80)    DEFAULT ''                    NOT NULL,      -- 説明
    kv_group_id          VARCHAR(20)    DEFAULT ''                    NOT NULL,      -- 項目グループ識別ID(任意)
    
    kv_create_user_id    INT            DEFAULT 0                     NOT NULL,      -- レコード作成者
    kv_create_dt         TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- レコード作成日時
    kv_update_user_id    INT            DEFAULT 0                     NOT NULL,      -- レコード更新者
    kv_update_dt         TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- レコード更新日時
    kv_deleted           BOOLEAN        DEFAULT false                 NOT NULL,      -- レコード削除状態
    PRIMARY KEY          (kv_serial),
    UNIQUE               (kv_id,        kv_history_index)
) TYPE=innodb;

-- ウィジェットパラメータ更新マスター
DROP TABLE IF EXISTS _widget_param_update;
CREATE TABLE _widget_param_update (
    wu_widget_id         VARCHAR(50)    DEFAULT ''                    NOT NULL,      -- ウィジェットID(ファイル名)
    wu_member_name       VARCHAR(40)    DEFAULT ''                    NOT NULL,      -- オブジェクトメンバー名
    wu_key_value_id      VARCHAR(40)    DEFAULT ''                    NOT NULL,      -- 対応する汎用キー値型パラメータマスターのID
    wu_group_id          VARCHAR(20)    DEFAULT ''                    NOT NULL,      -- 項目グループ識別ID
    PRIMARY KEY          (wu_widget_id, wu_member_name)
) TYPE=innodb;

-- デザイン設定マスター
DROP TABLE IF EXISTS _design;
CREATE TABLE _design (
    dn_id                VARCHAR(20)    DEFAULT ''                    NOT NULL,      -- ID(Key)
    dn_value             VARCHAR(10)    DEFAULT ''                    NOT NULL,      -- 値
    dn_name              VARCHAR(50)    DEFAULT ''                    NOT NULL,      -- 名称
    dn_description       VARCHAR(80)    DEFAULT ''                    NOT NULL,      -- 説明
    dn_index             INT            DEFAULT 0                     NOT NULL,      -- ソート用
    PRIMARY KEY          (dn_id)
) TYPE=innodb;

-- セッション管理トラン
DROP TABLE IF EXISTS _session;
CREATE TABLE _session (
    ss_id                CHAR(32)       DEFAULT ''                    NOT NULL,      -- ID
    ss_data              TEXT           DEFAULT ''                    NOT NULL,      -- 値
    ss_update_dt         TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- レコード更新日時
    PRIMARY KEY  (ss_id)
) TYPE=innodb;

-- 管理者一時キートラン
DROP TABLE IF EXISTS _admin_key;
CREATE TABLE _admin_key (
    ak_id                CHAR(32)       DEFAULT ''                    NOT NULL,      -- ID
    ak_ip                VARCHAR(40)    DEFAULT ''                    NOT NULL,      -- アクセス元IP(IPv6対応)
    ak_create_dt         TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- レコード作成日時
    PRIMARY KEY  (ak_id)
) TYPE=innodb;

-- 追加クラスマスター
DROP TABLE IF EXISTS _addons;
CREATE TABLE _addons (
    ao_id                VARCHAR(10)    DEFAULT ''                    NOT NULL,      -- クラスID
    ao_class_name        VARCHAR(40)    DEFAULT ''                    NOT NULL,      -- クラス名
    ao_name              VARCHAR(40)    DEFAULT ''                    NOT NULL,      -- 名称
    ao_description       VARCHAR(60)    DEFAULT ''                    NOT NULL,      -- 説明
    ao_index             INT            DEFAULT 0                     NOT NULL,      -- ソート用
    ao_autoload          BOOLEAN        DEFAULT true                  NOT NULL,      -- システム起動時の自動読み込み
    PRIMARY KEY          (ao_id)
) TYPE=innodb;

-- ログインユーザマスター
DROP TABLE IF EXISTS _login_user;
CREATE TABLE _login_user (
    lu_serial            INT            AUTO_INCREMENT,                              -- レコードシリアル番号
    lu_id                INT            DEFAULT 0                     NOT NULL,      -- ログインユーザID
    lu_history_index     INT            DEFAULT 0                     NOT NULL,      -- 履歴管理用インデックスNo(0～)
    lu_account           VARCHAR(40)    DEFAULT ''                    NOT NULL,      -- ログインアカウント
    lu_password          CHAR(32)       DEFAULT ''                    NOT NULL,      -- ログインパスワード(MD5)
    lu_name              VARCHAR(40)    DEFAULT ''                    NOT NULL,      -- ユーザ名
    lu_user_type         SMALLINT       DEFAULT 0                     NOT NULL,      -- ユーザタイプ(0=仮ユーザ、10=一般ユーザ、20=サイト運営者、100=システム管理者)
    lu_assign            TEXT           DEFAULT ''                    NOT NULL,      -- ログイン可能な機能(2バイト文字カンマ区切り、sy=システム管理機能、ec=EC、bg=ブログ、bs=BBS、rv=予約)
    lu_user_status       SMALLINT       DEFAULT 0                     NOT NULL,      -- ユーザの状態
    lu_enable_login      BOOLEAN        DEFAULT true                  NOT NULL,      -- ログイン許可
    lu_active_start_dt   TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- ログイン可能期間(開始)
    lu_active_end_dt     TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- ログイン可能期間(終了)
    lu_tmp_pwd_dt        TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- 仮パスワード発行日時
    lu_widget_id         VARCHAR(50)    DEFAULT ''                    NOT NULL,      -- レコードを登録したウィジェットID

    lu_create_user_id    INT            DEFAULT 0                     NOT NULL,      -- レコード作成者
    lu_create_dt         TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- レコード作成日時
    lu_update_user_id    INT            DEFAULT 0                     NOT NULL,      -- レコード更新者
    lu_update_dt         TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- レコード更新日時
    lu_deleted           BOOLEAN        DEFAULT false                 NOT NULL,      -- レコード削除状態
    PRIMARY KEY          (lu_serial),
    UNIQUE               (lu_id,        lu_history_index)
) TYPE=innodb;
INSERT INTO `_login_user` (`lu_id`, `lu_account`, `lu_password`, `lu_name`,  `lu_user_type`, `lu_assign`, `lu_create_dt`) VALUES
(1,     'admin',    md5('admin'),     '管理者', 100,          'sy,',       now());

-- ログインユーザ情報マスター(共通的に任意で使用するユーザ情報テーブル)
DROP TABLE IF EXISTS _login_user_info;
CREATE TABLE _login_user_info (
    li_serial            INT            AUTO_INCREMENT,                              -- レコードシリアル番号
    li_id                INT            DEFAULT 0                     NOT NULL,      -- ログインユーザID
    li_history_index     INT            DEFAULT 0                     NOT NULL,      -- 履歴管理用インデックスNo(0～)

    li_no                VARCHAR(40)    DEFAULT ''                    NOT NULL,      -- 任意利用No
    li_family_name       VARCHAR(20)    DEFAULT ''                    NOT NULL,      -- ユーザ名(姓)漢字
    li_first_name        VARCHAR(20)    DEFAULT ''                    NOT NULL,      -- ユーザ名(名)漢字
    li_family_name_kana  VARCHAR(20)    DEFAULT ''                    NOT NULL,      -- ユーザ名(姓)カナ
    li_first_name_kana   VARCHAR(20)    DEFAULT ''                    NOT NULL,      -- ユーザ名(名)カナ
    li_gender            SMALLINT       DEFAULT 0                     NOT NULL,      -- 性別(0=未設定、1=男、2=女)
    li_birthday          DATE           DEFAULT '0000-00-00'          NOT NULL,      -- 誕生日(西暦)
    li_email             VARCHAR(40)    DEFAULT ''                    NOT NULL,      -- Eメールアドレス
    li_mobile            VARCHAR(30)    DEFAULT ''                    NOT NULL,      -- 携帯電話
    li_zipcode           VARCHAR(10)    DEFAULT ''                    NOT NULL,      -- 郵便番号(7桁)
    li_state_id          INT            DEFAULT 0                     NOT NULL,      -- 都道府県、州(geo_zoneテーブル)
    li_address1          VARCHAR(100)   DEFAULT ''                    NOT NULL,      -- 市区町村
    li_address2          VARCHAR(60)    DEFAULT ''                    NOT NULL,      -- ビル・マンション名等
    li_phone             VARCHAR(30)    DEFAULT ''                    NOT NULL,      -- 電話番号
    li_fax               VARCHAR(30)    DEFAULT ''                    NOT NULL,      -- FAX
    li_country_id        VARCHAR(3)     DEFAULT ''                    NOT NULL,      -- 国ID

    li_create_user_id    INT            DEFAULT 0                     NOT NULL,      -- レコード作成者
    li_create_dt         TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- レコード作成日時
    li_update_user_id    INT            DEFAULT 0                     NOT NULL,      -- レコード更新者
    li_update_dt         TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- レコード更新日時
    li_deleted           BOOLEAN        DEFAULT false                 NOT NULL,      -- レコード削除状態
    PRIMARY KEY          (li_serial),
    UNIQUE               (li_id,        li_history_index)
) TYPE=innodb;

-- ユーザログイントラン
DROP TABLE IF EXISTS _login_log;
CREATE TABLE _login_log (
    ll_user_id           INT            DEFAULT 0                     NOT NULL,      -- ユーザID
    ll_login_count       INT            DEFAULT 0                     NOT NULL,      -- ログイン回数
    ll_access_log_serial INT            DEFAULT 0                     NOT NULL,      -- アクセスログシリアル番号
    ll_pre_login_dt      TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- 前回ログイン日時
    ll_last_login_dt     TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- 最終ログイン日時
    PRIMARY KEY  (ll_user_id)
) TYPE=innodb;

-- ユーザログインエラートラン
DROP TABLE IF EXISTS _login_err_log;
CREATE TABLE _login_err_log (
    le_serial            INT            AUTO_INCREMENT,                              -- レコードシリアル番号
    le_account           VARCHAR(40)    DEFAULT ''                    NOT NULL,      -- ログインアカウント
    le_ip                VARCHAR(40)    DEFAULT ''                    NOT NULL,      -- アクセス元IP(IPv6対応)
    le_access_log_serial INT            DEFAULT 0                     NOT NULL,      -- アクセスログシリアル番号
    PRIMARY KEY          (le_serial)
) TYPE=innodb;

-- ユーザアクセスログトラン
DROP TABLE IF EXISTS _access_log;
CREATE TABLE _access_log (
    al_serial            INT            AUTO_INCREMENT,                              -- レコードシリアル番号
    al_user_id           INT            DEFAULT 0                     NOT NULL,      -- ログインユーザID(0=不明)
    al_cookie_value      CHAR(32)       DEFAULT ''                    NOT NULL,      -- アクセス管理用クッキーの値
    al_ip                VARCHAR(40)    DEFAULT ''                    NOT NULL,      -- アクセス元IP(IPv6対応)
    al_method            VARCHAR(4)     DEFAULT ''                    NOT NULL,      -- アクセスメソッド
    al_uri               TEXT           DEFAULT ''                    NOT NULL,      -- アクセスURI
    al_referer           TEXT           DEFAULT ''                    NOT NULL,      -- リファラー
    al_request           TEXT           DEFAULT ''                    NOT NULL,      -- リクエストパラメータ
    al_user_agent        TEXT           DEFAULT ''                    NOT NULL,      -- アクセスプログラム
    al_accept_language   VARCHAR(50)    DEFAULT ''                    NOT NULL,      -- クライアントの認識可能言語
    al_dt                TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- アクセス日時
    PRIMARY KEY          (al_serial)
) TYPE=innodb;

-- ウィジェット実行ログトラン
DROP TABLE IF EXISTS _widget_log;
CREATE TABLE _widget_log (
    wl_serial            INT            AUTO_INCREMENT,                              -- レコードシリアル番号
    wl_widget_id         VARCHAR(50)    DEFAULT ''                    NOT NULL,      -- ウィジェットID(ファイル名)
    wl_type              INT            DEFAULT 0                     NOT NULL,      -- 実行タイプ(0=ページからの実行、1=単体実行)
    wl_cmd               VARCHAR(20)    DEFAULT ''                    NOT NULL,      -- 実行コマンド
    wl_message           TEXT           DEFAULT ''                    NOT NULL,      -- 実行メッセージ
    wl_access_log_serial INT            DEFAULT 0                     NOT NULL,      -- アクセスログシリアル番号
    wl_dt                TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- 記録日時
    PRIMARY KEY          (wl_serial)
) TYPE=innodb;

-- ナビゲーション項目マスター
DROP TABLE IF EXISTS _nav_item;
CREATE TABLE _nav_item (
    ni_id                INT            DEFAULT 0                     NOT NULL,      -- 項目ID
    ni_parent_id         INT            DEFAULT 0                     NOT NULL,      -- 親項目ID(親がないときは0)
    ni_index             INT            DEFAULT 0                     NOT NULL,      -- 表示順(0～)、ni_parent_id=0のときは親間の表示順
    ni_nav_id            VARCHAR(20)    DEFAULT ''                    NOT NULL,      -- ナビゲーション種別識別ID
    ni_task_id           VARCHAR(70)    DEFAULT ''                    NOT NULL,      -- 起動タスクID、「_」で始まるときはリンクなし
    ni_param             VARCHAR(20)    DEFAULT ''                    NOT NULL,      -- 追加パラメータ
    ni_group_id          VARCHAR(20)    DEFAULT ''                    NOT NULL,      -- 項目グループ識別ID
    ni_view_control      INT            DEFAULT 0                     NOT NULL,      -- 表示位置制御、1のとき表示位置変更
    ni_name              VARCHAR(40)    DEFAULT ''                    NOT NULL,      -- 名前
    ni_help_title        TEXT           DEFAULT ''                    NOT NULL,      -- ヘルプタイトル
    ni_help_body         TEXT           DEFAULT ''                    NOT NULL,      -- ヘルプ本文
    ni_visible           BOOLEAN        DEFAULT true                  NOT NULL,      -- 表示するかどうか
    PRIMARY KEY          (ni_id),
    UNIQUE               (ni_nav_id,    ni_task_id,                   ni_param)
) TYPE=innodb;
-- 管理画面メニューデータ
INSERT INTO _nav_item
(ni_id, ni_parent_id, ni_index, ni_nav_id,    ni_task_id,                     ni_group_id, ni_param, ni_name,    ni_help_title, ni_help_body, ni_visible) VALUES
(100,   0,            0,        'admin_menu', '_page',                        '',          '',       '画面管理', '画面管理', 'Webサイトのデザインや機能を管理します。', true),
(101,   100,          0,        'admin_menu', 'pagedef',                       '',          '',           'PC用画面編集', 'PC用画面編集', 'PC用Webサイトの画面を作成します。', true),
(102,   100,          1,        'admin_menu', 'pagedef_mobile',                '',          '',           '携帯用画面編集', '携帯用画面編集', '携帯用Webサイトの画面を作成します。', true),
(103,   100,          2,        'admin_menu', 'widgetlist',                   '',          '',       'ウィジェット管理', 'ウィジェット管理', 'ウィジェットの管理を行います。', true),
(104,   100,          3,        'admin_menu', 'templist',                     '',          '',       'テンプレート管理', 'テンプレート管理', 'テンプレートの管理を行います。', true),
(105,   100,          4,        'admin_menu', 'pageother',                    '',          '',       'システムマスター管理', 'システムマスター管理', 'システムに関するデータの管理を行います。', true),
(200,   0,            1,        'admin_menu', '_login',                       '',          '',       'ログイン管理', '', '', true),
(201,   200,          0,        'admin_menu', 'userlist',                     '',          '',       'ユーザ一覧',   'ユーザ一覧', 'ログイン可能なユーザを管理します。', true),
(202,   200,          1,        'admin_menu', 'loginstatus',                  '',          '',       'ログイン状況', 'ログイン状況', 'ユーザのログイン状況を表示します。', true),
(300,   0,            2,        'admin_menu', '_config',                      '',          '',       'システム管理', '', '', true),
(301,   300,          0,        'admin_menu', 'configsite',                   '',          '',       '基本情報', '基本情報', 'サイト運営者の設定を行います。メールアドレスは必須項目です。', true),
(302,   300,          1,        'admin_menu', 'configsys',                    '',          '',       'システム情報', 'システム情報', 'システム全体の設定、運用状況を管理します。', true),
(303,   300,          2,        'admin_menu', 'initsystem',                   '',          '',       'DBメンテナンス', 'DBメンテナンス', 'データの初期化などDBのメンテナンスを行います。', true),
(304,   300,          3,        'admin_menu', 'showpage_custom_admin',         '',          '', '自由編集画面', '自由編集画面', '画面にウィジェットを載せて任意の管理用画面が作成できます。画面を作成するには、システム情報で開発モードをオンにし、PC用画面編集機能を使用します。', false),
(1000,  0,            4,        'admin_menu', '_develop',                     'develop',   '',       '開発', '開発', '開発時に使用する機能です。', false),
(1001,  1000,         0,        'admin_menu', 'editsource',                   'develop',   '',       'ソース参照', 'ソース参照', 'ソースコードが参照できます。', false),
(1002,  1000,         1,        'admin_menu', 'createtable',                   'develop',   '',       'ユーザ定義テーブル', 'ユーザ定義テーブル', 'ユーザ定義のテーブルの作成、データの編集を行います。', false),
(1100,  0,            11,       'admin_menu', '_others',                       '',          '',           'その他', '', '', true),
(1101,  1100,         0,        'admin_menu', 'logout',                        '',          '',                  'ログアウト', 'ログアウト', '管理機能からログアウトします。', true);

-- コンテンツ参照トラン
DROP TABLE IF EXISTS _view_count;
CREATE TABLE _view_count (
    vc_serial            INT            AUTO_INCREMENT,                              -- レコードシリアル番号
    vc_type_id           VARCHAR(2)     DEFAULT ''                    NOT NULL,      -- コンテンツタイプ(ct=デフォルトコンテンツ, bg=ブログ)
    vc_content_serial    INT            DEFAULT 0                     NOT NULL,      -- コンテンツシリアル番号
    vc_date              DATE           DEFAULT '0000-00-00'          NOT NULL,      -- 日付
    vc_hour              SMALLINT       DEFAULT 0                     NOT NULL,      -- 時間
    vc_count             INT            DEFAULT 0                     NOT NULL,      -- 参照数
    PRIMARY KEY          (vc_serial),
    UNIQUE               (vc_type_id,      vc_content_serial,            vc_date,       vc_hour)
) TYPE=innodb;

-- テンプレート表示位置マスター
DROP TABLE IF EXISTS _template_position;
CREATE TABLE _template_position (
    tp_id                VARCHAR(20)    DEFAULT ''                    NOT NULL,      -- テンプレートID
    tp_name              VARCHAR(40)    DEFAULT ''                    NOT NULL,      -- テンプレート名称
    tp_description       VARCHAR(100)   DEFAULT ''                    NOT NULL,      -- 説明
    tp_sort_order        INT            DEFAULT 0                     NOT NULL,      -- ソート順
    tp_available         BOOLEAN        DEFAULT true                  NOT NULL,      -- メニューから選択可能かどうか
    PRIMARY KEY  (tp_id)
) TYPE=innodb;
INSERT INTO `_template_position` (`tp_id`,       `tp_name`, `tp_description`, `tp_sort_order`) VALUES
('main',      'main',      '',             0),
('left',      'left',      '',             1),
('right',     'right',      '',             2),
('center',    'center',      '',             3),
('top',       'top',      '',             4),
('bottom',    'bottom',      '',             5),
('header',    'header',      '',             6),
('footer',    'footer',      '',             7),
('navi',      'navi',      '',             8),
('inset',     'inset',      '',             9),
('banner',    'banner',      '',             10),
('newsflash', 'newsflash',      '',          11),
('legals',    'legals',      '',             12),
('pathway',   'pathway',      '',            13),
('toolbar',   'toolbar',      '',            14),
('cpanel',    'cpanel',      '',             15),
('user1',     'user1',      '',             16),
('user2',     'user2',      '',             17),
('user3',     'user3',      '',             18),
('user4',     'user4',      '',             19),
('user5',     'user5',      '',             20),
('user6',     'user6',      '',             21),
('user7',     'user7',      '',             22),
('user8',     'user8',      '',             23),
('user9',     'user9',      '',             24),
('advert1',   'advert1',      '',             25),
('advert2',   'advert2',      '',             26),
('advert3',   'advert3',      '',             27),
('advert4',   'advert4',      '',             28),
('advert5',   'advert5',      '',             29),
('icon',      'icon',      '',             30),
('debug',     'debug',      'デバッグ用',   31);

-- テンプレート情報マスター
DROP TABLE IF EXISTS _templates;
CREATE TABLE _templates (
    tm_serial            INT            AUTO_INCREMENT,                              -- レコードシリアル番号
    tm_id                VARCHAR(50)    DEFAULT ''                    NOT NULL,      -- テンプレートID
    tm_history_index     INT            DEFAULT 0                     NOT NULL,      -- 履歴管理用インデックスNo(0～)
    tm_language          TEXT           DEFAULT ''                    NOT NULL,      -- 対応言語ID(「,」区切りで複数指定可)
    tm_name              VARCHAR(50)    DEFAULT ''                    NOT NULL,      -- テンプレート名
    tm_description       VARCHAR(100)   DEFAULT ''                    NOT NULL,      -- 説明
    tm_url               TEXT           DEFAULT ''                    NOT NULL,      -- 取得先URL
    tm_default           BOOLEAN        DEFAULT false                 NOT NULL,      -- デフォルトフラグ
    tm_mobile            BOOLEAN        DEFAULT false                 NOT NULL,      -- 携帯対応かどうか
    tm_available         BOOLEAN        DEFAULT true                  NOT NULL,      -- メニューから選択可能かどうか
    
    tm_create_user_id    INT            DEFAULT 0                     NOT NULL,      -- レコード作成者
    tm_create_dt         TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- レコード作成日時
    tm_update_user_id    INT            DEFAULT 0                     NOT NULL,      -- レコード更新者
    tm_update_dt         TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- レコード更新日時
    tm_deleted           BOOLEAN        DEFAULT false                 NOT NULL,      -- レコード削除状態
    PRIMARY KEY          (tm_serial),
    UNIQUE               (tm_id,        tm_history_index)
) TYPE=innodb;

-- ウィジェット情報マスター
DROP TABLE IF EXISTS _widgets;
CREATE TABLE _widgets (
    wd_serial            INT            AUTO_INCREMENT,                              -- レコードシリアル番号
    wd_id                VARCHAR(50)    DEFAULT ''                    NOT NULL,      -- ウィジェットID(ファイル名)
    wd_history_index     INT            DEFAULT 0                     NOT NULL,      -- 履歴管理用インデックスNo(0～)
    
    wd_language          TEXT           DEFAULT ''                    NOT NULL,      -- 対応言語ID(「,」区切りで複数指定可)
    wd_name              VARCHAR(50)    DEFAULT ''                    NOT NULL,      -- ウィジェット名称
    wd_type              VARCHAR(8)     DEFAULT ''                    NOT NULL,      -- ウィジェット種別(ウィジェットの種類を示す文字コード)
    wd_version           VARCHAR(10)    DEFAULT ''                    NOT NULL,      -- バージョン文字列
    wd_fingerprint       CHAR(32)       DEFAULT ''                    NOT NULL,      -- ソースコードレベルでウィジェットを識別するためのID
    wd_group_id          VARCHAR(10)    DEFAULT ''                    NOT NULL,      -- ウィジェットグループ(管理用)
    wd_compatible_id     VARCHAR(50)    DEFAULT ''                    NOT NULL,      -- 互換ウィジェットID
    wd_suffix            VARCHAR(4)     DEFAULT ''                    NOT NULL,      -- HTMLタグのクラス名に付けるサフィックス文字列
    wd_params            VARCHAR(100)   DEFAULT ''                    NOT NULL,      -- 各種パラメータ
    wd_author            VARCHAR(30)    DEFAULT ''                    NOT NULL,      -- 作者名
    wd_copyright         VARCHAR(30)    DEFAULT ''                    NOT NULL,      -- 著作権
    wd_license           VARCHAR(30)    DEFAULT ''                    NOT NULL,      -- ライセンス
    wd_official_level    INT            DEFAULT 0                     NOT NULL,      -- 公認レベル(0=非公認、1=準公認、10=正規公認)
    wd_status            INT            DEFAULT 0                     NOT NULL,      -- 状態(0=通常、1=テスト中)
    wd_description       VARCHAR(100)   DEFAULT ''                    NOT NULL,      -- 説明
    wd_url               TEXT           DEFAULT ''                    NOT NULL,      -- 取得先URL
    wd_add_script_lib    TEXT           DEFAULT ''                    NOT NULL,      -- 追加する共通スクリプトライブラリ(ライブラリ名で指定、「,」区切りで複数指定可)
    wd_add_scripts       TEXT           DEFAULT ''                    NOT NULL,      -- 追加スクリプトファイル(相対パス表記、「,」区切りで複数指定可)
    wd_add_css           TEXT           DEFAULT ''                    NOT NULL,      -- 追加CSSファイル(相対パス表記、「,」区切りで複数指定可)
    wd_cache_interval    INT            DEFAULT 0                     NOT NULL,      -- キャッシュの更新時間(分)
    wd_mobile            BOOLEAN        DEFAULT false                 NOT NULL,      -- 携帯対応かどうか
    wd_show_name         BOOLEAN        DEFAULT false                 NOT NULL,      -- ウィジェット名称を表示するかどうか
    wd_read_scripts      BOOLEAN        DEFAULT false                 NOT NULL,      -- スクリプトディレクトリを自動読み込みするかどうか
    wd_read_css          BOOLEAN        DEFAULT false                 NOT NULL,      -- cssディレクトリを自動読み込みするかどうか
    wd_use_ajax          BOOLEAN        DEFAULT false                 NOT NULL,      -- Ajax共通ライブラリを読み込むかどうか
    wd_available         BOOLEAN        DEFAULT true                  NOT NULL,      -- メニューから選択可能かどうか
    wd_editable          BOOLEAN        DEFAULT true                  NOT NULL,      -- データ編集可能かどうか
    wd_has_admin         BOOLEAN        DEFAULT false                 NOT NULL,      -- 管理画面があるかどうか
    wd_has_log           BOOLEAN        DEFAULT false                 NOT NULL,      -- ログ参照画面があるかどうか
    wd_enable_operation  BOOLEAN        DEFAULT false                 NOT NULL,      -- 単体起動可能かどうか
    wd_use_instance_def  BOOLEAN        DEFAULT false                 NOT NULL,      -- インスタンス定義が必要かどうか
    wd_is_initialized    BOOLEAN        DEFAULT false                 NOT NULL,      -- 初期化完了かどうか
    wd_use_cache         BOOLEAN        DEFAULT false                 NOT NULL,      -- キャッシュ機能を使用するかどうか
    wd_launch_index      INT            DEFAULT 0                     NOT NULL,      -- 遅延実行制御が必要な場合の実行順(0=未設定、0以上=実行順)
    wd_install_dt        TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- インストール日時
    
    wd_index_file        VARCHAR(50)    DEFAULT ''                    NOT NULL,      -- 起動クラスのファイル名
    wd_index_class       VARCHAR(200)   DEFAULT ''                    NOT NULL,      -- 起動クラス名
    wd_admin_file        VARCHAR(50)    DEFAULT ''                    NOT NULL,      -- 管理機能起動クラスのファイル名
    wd_admin_class       VARCHAR(200)   DEFAULT ''                    NOT NULL,      -- 管理機能起動クラス名
    wd_db                VARCHAR(20)    DEFAULT ''                    NOT NULL,      -- 対応DB種(mysql,pgsql等を「,」区切りで指定)
	
    wd_checked_out       BOOLEAN        DEFAULT false                 NOT NULL,      -- チェックアウト中かどうか
    wd_checked_out_dt    TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- チェックアウト日時
    wd_create_user_id    INT            DEFAULT 0                     NOT NULL,      -- レコード作成者
    wd_create_dt         TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- レコード作成日時
    wd_update_user_id    INT            DEFAULT 0                     NOT NULL,      -- レコード更新者
    wd_update_dt         TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- レコード更新日時
    wd_deleted           BOOLEAN        DEFAULT false                 NOT NULL,      -- レコード削除状態
    PRIMARY KEY          (wd_serial),
    UNIQUE               (wd_id,        wd_history_index)
) TYPE=innodb;
INSERT INTO `_widgets` (`wd_id`, `wd_name`, `wd_type`, `wd_params`, `wd_author`, `wd_copyright`, `wd_license`, `wd_official_level`, `wd_read_scripts`, `wd_read_css`, `wd_available`, `wd_editable`, `wd_has_admin`, `wd_enable_operation`, `wd_use_instance_def`, `wd_is_initialized`, `wd_launch_index`, `wd_install_dt`, `wd_create_dt`) VALUES
('admin_menu',       '管理用メニュー',             'ADMN',  '',     'Naoki Hirata', 'Magic3.org', 'GPL', 10,         true,            true,        false,        false,       false,        false,          false, true, 100, now(),now()),
('admin_menu2',       '管理用メニュー2',             'ADM2',  '',     'Naoki Hirata', 'Magic3.org', 'GPL', 10,         true,            true,        false,        false,       false,        false,          false, true, 100, now(),now()),
('admin_main',       '管理用画面',                 'ADBD',  '',     'Naoki Hirata', 'Magic3.org', 'GPL', 10,         true,            true,        false,        false,       false,        true,          false, true, 0,   now(),now());

-- ウィジェットパラメータマスター
DROP TABLE IF EXISTS _widget_param;
CREATE TABLE _widget_param (
    wp_serial            INT            AUTO_INCREMENT,                              -- レコードシリアル番号
    wp_id                VARCHAR(50)    DEFAULT ''                    NOT NULL,      -- ウィジェットID
    wp_history_index     INT            DEFAULT 0                     NOT NULL,      -- 履歴管理用インデックスNo(0～)
    wp_param             TEXT           DEFAULT ''                    NOT NULL,      -- パラメータオブジェクトをシリアライズしたもの
    
    wp_checked_out       BOOLEAN        DEFAULT false                 NOT NULL,      -- チェックアウト中かどうか
    wp_checked_out_dt    TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- チェックアウト日時
    wp_create_user_id    INT            DEFAULT 0                     NOT NULL,      -- レコード作成者
    wp_create_dt         TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- レコード作成日時
    wp_update_user_id    INT            DEFAULT 0                     NOT NULL,      -- レコード更新者
    wp_update_dt         TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- レコード更新日時
    wp_deleted           BOOLEAN        DEFAULT false                 NOT NULL,      -- レコード削除状態
    PRIMARY KEY          (wp_serial),
    UNIQUE               (wp_id,        wp_history_index)
) TYPE=innodb;

-- インナーウィジェット情報マスター
DROP TABLE IF EXISTS _iwidgets;
CREATE TABLE _iwidgets (
    iw_serial            INT            AUTO_INCREMENT,                              -- レコードシリアル番号
    iw_widget_id         VARCHAR(50)    DEFAULT ''                    NOT NULL,      -- ウィジェットID(ファイル名)
    iw_id                VARCHAR(50)    DEFAULT ''                    NOT NULL,      -- インナーウィジェットID(ファイル名)
    iw_history_index     INT            DEFAULT 0                     NOT NULL,      -- 履歴管理用インデックスNo(0～)
    
    iw_language          TEXT           DEFAULT ''                    NOT NULL,      -- 対応言語ID(「,」区切りで複数指定可)
    iw_name              VARCHAR(50)    DEFAULT ''                    NOT NULL,      -- ウィジェット名称
    iw_type              VARCHAR(8)     DEFAULT ''                    NOT NULL,      -- ウィジェット種別(ウィジェットの種類を示す文字コード)
    iw_version           VARCHAR(10)    DEFAULT ''                    NOT NULL,      -- バージョン文字列
    iw_fingerprint       CHAR(32)       DEFAULT ''                    NOT NULL,      -- ソースコードレベルでウィジェットを識別するためのID
    iw_author            VARCHAR(30)    DEFAULT ''                    NOT NULL,      -- 作者名
    iw_copyright         VARCHAR(30)    DEFAULT ''                    NOT NULL,      -- 著作権
    iw_license           VARCHAR(30)    DEFAULT ''                    NOT NULL,      -- ライセンス
    iw_official_level    INT            DEFAULT 0                     NOT NULL,      -- 公認レベル(0=非公認、1=準公認、10=正規公認)
    iw_description       VARCHAR(100)   DEFAULT ''                    NOT NULL,      -- 説明
    iw_url               TEXT           DEFAULT ''                    NOT NULL,      -- 取得先URL
    iw_install_dt        TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- インストール日時
    
    iw_index_file        VARCHAR(50)    DEFAULT ''                    NOT NULL,      -- 起動クラスのファイル名
    iw_index_class       VARCHAR(200)   DEFAULT ''                    NOT NULL,      -- 起動クラス名
    iw_admin_file        VARCHAR(50)    DEFAULT ''                    NOT NULL,      -- 管理機能起動クラスのファイル名
    iw_admin_class       VARCHAR(200)   DEFAULT ''                    NOT NULL,      -- 管理機能起動クラス名
    iw_db                VARCHAR(20)    DEFAULT ''                    NOT NULL,      -- 対応DB種(mysql,pgsql等を「,」区切りで指定)
	
    iw_checked_out       BOOLEAN        DEFAULT false                 NOT NULL,      -- チェックアウト中かどうか
    iw_checked_out_dt    TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- チェックアウト日時
    iw_create_user_id    INT            DEFAULT 0                     NOT NULL,      -- レコード作成者
    iw_create_dt         TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- レコード作成日時
    iw_update_user_id    INT            DEFAULT 0                     NOT NULL,      -- レコード更新者
    iw_update_dt         TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- レコード更新日時
    iw_deleted           BOOLEAN        DEFAULT false                 NOT NULL,      -- レコード削除状態
    PRIMARY KEY          (iw_serial),
    UNIQUE               (iw_widget_id, iw_id,        iw_history_index)
) TYPE=innodb;

-- ページIDマスター
DROP TABLE IF EXISTS _page_id;
CREATE TABLE _page_id (
    pg_id                VARCHAR(20)    DEFAULT ''                    NOT NULL,      -- ページメインID、ページサブID
    pg_type              INT            DEFAULT 0                     NOT NULL,      -- ページID種別(0=ページメインID,1=ページサブID)
    pg_default_sub_id    VARCHAR(20)    DEFAULT ''                    NOT NULL,      -- デフォルトのサブページID(ページID種別がページメインIDとき使用)
    pg_path              VARCHAR(40)    DEFAULT ''                    NOT NULL,      -- アクセスポイントパス(ページID種別がページメインIDとき使用)
    pg_name              VARCHAR(40)    DEFAULT ''                    NOT NULL,      -- ページ名称
    pg_description       VARCHAR(60)    DEFAULT ''                    NOT NULL,      -- 説明
    pg_priority          INT            DEFAULT 0                     NOT NULL,      -- 優先度
    pg_is_public         BOOLEAN        DEFAULT false                 NOT NULL,      -- URLの公開
    pg_mobile            BOOLEAN        DEFAULT false                 NOT NULL,      -- 携帯対応かどうか
    pg_editable          BOOLEAN        DEFAULT true                  NOT NULL,      -- データ編集可能かどうか
    PRIMARY KEY  (pg_id, pg_type)
) TYPE=innodb;
INSERT INTO _page_id (pg_id,         pg_type, pg_default_sub_id, pg_path,       pg_name,          pg_description,                     pg_priority, pg_is_public, pg_mobile, pg_editable) VALUES
('index',       0,       'content',      'index',       'index',          'PC用アクセスポイント',                0,true,false,true),
('m_index',     0,       'content',      'm/index',     'm_index',        '携帯用アクセスポイント',              1,true,true,true),
('admin_index', 0,       'content',         'admin/index', 'admin_index',    '管理用アクセスポイント',           2,true,false,false),
('face',        1,       '',                '',            'トップ専用',     'トップ専用画面用',                 0,true,false,true),
('content',     1,       '',                '',            'コンテンツ',     'コンテンツ画面用',                 1,true,false,false),
('shop',        1,       '',                '',            'ECショップ',     'ECショップ画面用',                 2,true,false,true),
('shop_safe',        1,       '',                '',            'ECショップ(セキュリティ保護)',     'ECショップ(セキュリティ保護)画面用',                 3,true,false,true),
('bbs',         1,       '',                '',            '掲示板',         '掲示板画面用',                     4,true,false,true),
('blog',        1,       '',                '',            'ブログ',         'ブログ画面用',                     5,true,false,true),
('photo',       1,       '',                '',            'フォトアルバム', 'フォトアルバム画面用',             6,true,false,true),
('contact',     1,       '',                '',            'お問い合わせ',   'お問い合わせ画面用',               7,true,false,true),
('reserve',     1,       '',                '',            '予約',           '予約画面用',                       8,true,false,true),
('safe',        1,       '',                '',            'セキュリティ保護',   'セキュリティ保護画面用',       9,true,false,true),
('custom_admin',1,       '',                '',            '自由編集',       '管理用自由編集画面用',             100,false,false,true),
('test',        1,       '',                '',            'テスト用',       'テスト用非公開画面',               101,false,false,true);

-- ページオプションマスター
DROP TABLE IF EXISTS _page_option;
CREATE TABLE _page_option (
    pn_serial            INT            AUTO_INCREMENT,                              -- レコードシリアル番号
    pn_id                VARCHAR(50)    DEFAULT ''                    NOT NULL,      -- ページID
    pn_sub_id            VARCHAR(50)    DEFAULT ''                    NOT NULL,      -- ページ補助ID
    pn_param             VARCHAR(50)    DEFAULT ''                    NOT NULL,      -- その他のURLパラメータ
    pn_language_id       VARCHAR(2)     DEFAULT ''                    NOT NULL,      -- 言語ID
    pn_history_index     INT            DEFAULT 0                     NOT NULL,      -- 履歴管理用インデックスNo(0～)

    pn_template_id       VARCHAR(50)    DEFAULT ''                    NOT NULL,      -- テンプレートID
    pn_layout_id         VARCHAR(50)    DEFAULT ''                    NOT NULL,      -- レイアウトID
    pn_meta_description  TEXT           DEFAULT ''                    NOT NULL,      -- METAタグ、ページ要約
    pn_meta_keywords     TEXT           DEFAULT ''                    NOT NULL,      -- METAタグ、検索用キーワード
    pn_use_ssl           BOOLEAN        DEFAULT false                 NOT NULL,      -- SSLを使用するかどうか
    
    pn_checked_out       BOOLEAN        DEFAULT false                 NOT NULL,      -- チェックアウト中かどうか
    pn_checked_out_dt    TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- チェックアウト日時
    pn_create_user_id    INT            DEFAULT 0                     NOT NULL,      -- レコード作成者
    pn_create_dt         TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- レコード作成日時
    pn_update_user_id    INT            DEFAULT 0                     NOT NULL,      -- レコード更新者
    pn_update_dt         TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- レコード更新日時
    pn_deleted           BOOLEAN        DEFAULT false                 NOT NULL,      -- レコード削除状態
    PRIMARY KEY          (pn_serial),
    UNIQUE               (pn_id,        pn_sub_id,   pn_param,        pn_language_id,  pn_history_index)
) TYPE=innodb;

-- ページ定義マスター
DROP TABLE IF EXISTS _page_def;
CREATE TABLE _page_def (
    pd_serial            INT            AUTO_INCREMENT,                              -- レコードシリアル番号
    pd_id                VARCHAR(50)    DEFAULT ''                    NOT NULL,      -- ページID(ファイル名)
    pd_sub_id            VARCHAR(50)    DEFAULT ''                    NOT NULL,      -- ページ補助ID
    pd_set_id            INT            DEFAULT 0                     NOT NULL,      -- 定義セットID
    
    pd_position_id       VARCHAR(50)    DEFAULT ''                    NOT NULL,      -- 表示位置ID
    pd_index             INT            DEFAULT 0                     NOT NULL,      -- 表示順(1～)
    pd_widget_id         VARCHAR(50)    DEFAULT ''                    NOT NULL,      -- 表示するウィジェットID
    pd_config_id         INT            DEFAULT 0                     NOT NULL,      -- ウィジェット定義ID
    pd_config_name       VARCHAR(40)    DEFAULT ''                    NOT NULL,      -- ウィジェット定義名
    pd_suffix            VARCHAR(5)     DEFAULT ''                    NOT NULL,      -- インスタンスを区別するためのサフィックス文字列
    pd_style             TEXT           DEFAULT ''                    NOT NULL,      -- HTMLスタイル属性
    pd_visible           BOOLEAN        DEFAULT true                  NOT NULL,      -- ウィジェットを表示するかどうか
    pd_editable          BOOLEAN        DEFAULT true                  NOT NULL,      -- データ編集可能かどうか
    pd_cache_dt          TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- キャッシュ更新日時
    
    pd_update_user_id    INT            DEFAULT 0                     NOT NULL,      -- レコード更新者
    pd_update_dt         TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- レコード更新日時
    PRIMARY KEY          (pd_serial)
) TYPE=innodb;
INSERT INTO `_page_def` (`pd_id`,         `pd_sub_id`, `pd_position_id`, `pd_index`, `pd_widget_id`,       `pd_config_id`, `pd_visible`, `pd_editable`, `pd_update_dt`) VALUES
('admin_index', '',        'top',          1,        'admin_menu2',       0,                   true,       false,       now()),
('admin_index', 'content',        'main',         1,        'admin_main',       0,                   true,       false,       now()),
('admin_index', 'custom_admin',   'left',         1,        'release_info',       0,                   true,       false,       now());

-- ページ定義セットマスター
DROP TABLE IF EXISTS _page_def_set;
CREATE TABLE _page_def_set (
    ds_id                INT            DEFAULT 0                     NOT NULL,      -- 定義セットID
    
    ds_name              VARCHAR(50)    DEFAULT ''                    NOT NULL,      -- 定義セット名称
    ds_user_type         INT            DEFAULT 0                     NOT NULL,      -- ユーザタイプ
    
    ds_create_user_id    INT            DEFAULT 0                     NOT NULL,      -- レコード作成者
    ds_create_dt         TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- レコード作成日時
    PRIMARY KEY          (ds_id)
) TYPE=innodb;

-- サイト定義マスター
DROP TABLE IF EXISTS _site_def;
CREATE TABLE _site_def (
    sd_serial            INT            AUTO_INCREMENT,                              -- レコードシリアル番号
    sd_id                VARCHAR(30)    DEFAULT ''                    NOT NULL,      -- 定義項目ID
    sd_language_id       VARCHAR(2)     DEFAULT ''                    NOT NULL,      -- 言語ID
    sd_history_index     INT            DEFAULT 0                     NOT NULL,      -- 履歴管理用インデックスNo(0～)
    sd_value             VARCHAR(100)   DEFAULT ''                    NOT NULL,      -- 値

    sd_create_user_id    INT            DEFAULT 0                     NOT NULL,      -- レコード作成者
    sd_create_dt         TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- レコード作成日時
    sd_update_user_id    INT            DEFAULT 0                     NOT NULL,      -- レコード更新者
    sd_update_dt         TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- レコード更新日時
    sd_deleted           BOOLEAN        DEFAULT false                 NOT NULL,      -- レコード削除状態
    PRIMARY KEY          (sd_serial),
    UNIQUE               (sd_id,        sd_language_id,               sd_history_index)
) TYPE=innodb;
INSERT INTO `_site_def` (`sd_id`,              `sd_language_id`, `sd_value`,         `sd_create_dt`) VALUES
('head_description', 'ja',           '', now()),
('head_keywords',    'ja',           '',     now()),
('head_robots',      'ja',           '',  now()),
('head_title',      'ja',           '',  now()),
('site_name',        'ja',           '',     now()),
('site_owner',       'ja',           '',     now()),
('site_copyright',  'ja',           '',     now()),
('site_email',       'ja',           '',     now()),
('license_key',  'ja',           '',     now()),
('license_email',       'ja',           '',     now()),
('license_name',  'ja',           '',     now()),
('license_zipcode',  'ja',           '',     now()),
('license_address',  'ja',           '',     now()),
('license_fax',  'ja',           '',     now());

-- メール送信ログトラン
DROP TABLE IF EXISTS _mail_send_log;
CREATE TABLE _mail_send_log (
    ms_serial            INT            AUTO_INCREMENT,                              -- レコードシリアル番号
    ms_type              INT            DEFAULT 0                     NOT NULL,      -- メール種別(0=未設定、1=自動送信、2=手動送信)
    ms_widget_id         VARCHAR(50)    DEFAULT ''                    NOT NULL,      -- 送信ウィジェットID
    ms_to                VARCHAR(50)    DEFAULT ''                    NOT NULL,      -- メール送信先アドレス
    ms_from              VARCHAR(50)    DEFAULT ''                    NOT NULL,      -- メール送信元アドレス
    ms_subject           VARCHAR(100)   DEFAULT ''                    NOT NULL,      -- メール件名
    ms_body              VARCHAR(500)   DEFAULT ''                    NOT NULL,      -- メール本文
    ms_dt                TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- 送信日時
    PRIMARY KEY          (ms_serial)
) TYPE=innodb;

-- 定型メールフォーム
DROP TABLE IF EXISTS _mail_form;
CREATE TABLE _mail_form (
    mf_serial            INT            AUTO_INCREMENT,                              -- レコードシリアル番号
    mf_id                VARCHAR(40)    DEFAULT ''                    NOT NULL,      -- 定義項目ID
    mf_history_index     INT            DEFAULT 0                     NOT NULL,      -- 履歴管理用インデックスNo(0～)
    
    mf_language_id       VARCHAR(2)     DEFAULT ''                    NOT NULL,      -- 言語ID
    mf_subject           VARCHAR(100)   DEFAULT ''                    NOT NULL,      -- 件名
    mf_content           VARCHAR(2000)  DEFAULT ''                    NOT NULL,      -- コンテンツ

    mf_check_out_user_id INT            DEFAULT 0                     NOT NULL,      -- チェックアウトユーザID(0のときはチェックイン状態)
    mf_check_out_dt      TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- チェックアウト日時
    mf_create_user_id    INT            DEFAULT 0                     NOT NULL,      -- レコード作成者
    mf_create_dt         TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- レコード作成日時
    mf_update_user_id    INT            DEFAULT 0                     NOT NULL,      -- レコード更新者
    mf_update_dt         TIMESTAMP      DEFAULT '0000-00-00 00:00:00' NOT NULL,      -- レコード更新日時
    mf_deleted           BOOLEAN        DEFAULT false                 NOT NULL,      -- レコード削除状態
    PRIMARY KEY          (mf_serial),
    UNIQUE               (mf_id,        mf_history_index)
) TYPE=innodb;

-- テーブル作成マスター
DROP TABLE IF EXISTS _table_def;
CREATE TABLE _table_def (
    td_serial            INT            AUTO_INCREMENT,                              -- レコードシリアル番号
    td_table_id          VARCHAR(20)    DEFAULT ''                    NOT NULL,      -- テーブル名
    td_id                VARCHAR(20)    DEFAULT ''                    NOT NULL,      -- フィールド名(空文字列=テーブル名保持用)
    td_index             INT            DEFAULT 0                     NOT NULL,      -- フィールド番号
    td_type              VARCHAR(10)    DEFAULT ''                    NOT NULL,      -- フィールド型
    td_name              VARCHAR(40)    DEFAULT ''                    NOT NULL,      -- 名称
    td_default_value     VARCHAR(10)    DEFAULT ''                    NOT NULL,      -- 初期値
    PRIMARY KEY          (td_serial),
    UNIQUE               (td_table_id,  td_id)
) TYPE=innodb;
