データベース概要
システム構成
データベース管理システム: MySQL 5.7+ / MariaDB 10.3+
データベース名: TRACERDB7
文字コード: utf8mb4
照合順序: utf8mb4_unicode_ci
テーブル分類
トランザクションテーブル
死体移植系
| テーブル名 |
レコード数概算 |
用途 |
| T_ISHOKU_KIHON |
数千件 |
死体移植基本情報 |
| T_ISHOKU_KIHON_HEART |
数百件 |
心臓移植詳細 |
| T_ISHOKU_KIHON_LUNG |
数百件 |
肺移植詳細 |
| T_ISHOKU_KIHON_LIVER |
数百件 |
肝臓移植詳細 |
| T_ISHOKU_KIHON_KIDNEY |
数千件 |
腎臓移植詳細 |
| T_ISHOKU_KIHON_PANCREAS |
数十件 |
膵臓移植詳細 |
| T_ISHOKU_KIHON_SMALL_INTESTINE |
数件 |
小腸移植詳細 |
| T_DONOR |
数千件 |
ドナー情報 |
| T_NYURYOKUJOKYO |
数千件 |
入力状況管理 |
生体移植系(_LIVサフィックス)
| テーブル名 |
レコード数概算 |
用途 |
| T_ISHOKU_KIHON_LIV |
数千件 |
生体移植基本情報 |
| T_ISHOKU_KIHON_LIVER_LIV |
数百件 |
肝臓生体移植詳細 |
| T_ISHOKU_KIHON_KIDNEY_LIV |
数百件 |
腎臓生体移植詳細 |
| T_ISHOKU_KIHON_LUNG_LIV |
数件 |
肺生体移植詳細 |
| T_DONOR_LIV |
数千件 |
生体ドナー基本情報 |
| T_DONOR_LIVER_LIV |
数百件 |
肝臓ドナー詳細 |
| T_DONOR_KIDNEY_LIV |
数百件 |
腎臓ドナー詳細 |
| T_DONOR_LUNG_LIV |
数件 |
肺ドナー詳細 |
| T_NYURYOKUJOKYO_LIV |
数千件 |
入力状況管理 |
受者追跡(生体)
| テーブル名 |
レコード数概算 |
用途 |
| T_LIVING_R_LIV |
数万件 |
生存・生着状況 |
| T_REJECTION_R_LIV |
数千件 |
拒絶反応記録 |
| T_GAPPEI_R_LIV |
数千件 |
合併症記録 |
| T_IJI_MENEKI_YOKUSEI_R_LIV |
数万件 |
免疫抑制剤使用記録 |
| T_KANSEN_R_LIV |
数千件 |
感染症記録 |
| T_KENSA_R_LIV |
数万件 |
検査値記録 |
ドナー追跡(生体)
| テーブル名 |
レコード数概算 |
用途 |
| T_LIVING_D_LIV |
数千件 |
ドナー生存状況 |
| T_GAPPEI_D_LIV |
数百件 |
ドナー合併症記録 |
| T_KENSA_D_LIV |
数千件 |
ドナー検査値記録 |
AMED要約テーブル
| テーブル名 |
レコード数概算 |
用途 |
| AMED_LIVER |
数百件 |
肝臓移植要約データ |
| AMED_KIDNEY |
数百件 |
腎臓移植要約データ |
移行管理
| テーブル名 |
レコード数概算 |
用途 |
| T_TRACER_IKO |
数千件 |
TRACER旧システムとの紐付け |
マスタテーブル
| テーブル名 |
レコード数 |
用途 |
| mcd_mst |
数千件 |
マスタコード定義 |
| institutionMst |
数百件 |
施設マスタ |
| prefMst |
47件 |
都道府県マスタ |
| blockMst |
11件 |
ブロックマスタ |
| accountTypeMst |
10件未満 |
アカウント種別 |
| statusMst |
10件未満 |
ステータス定義 |
| workMst |
数十件 |
作業定義 |
| internalOrgansMst |
10件未満 |
臓器マスタ |
| affiliationMst |
数十件 |
所属マスタ |
| hdqrsAuthMst |
10件未満 |
本部権限マスタ |
| cordinatorTypeMst |
10件未満 |
コーディネータ種別 |
アカウント・権限テーブル
| テーブル名 |
レコード数概算 |
用途 |
| accountTbl |
数百件 |
ユーザーアカウント |
| Doctortbl |
数千件 |
医師情報 |
ログ・セッションテーブル
| テーブル名 |
レコード数概算 |
用途 |
保持期間 |
| accessLogTbl |
数十万件 |
アクセスログ |
1年 |
| sessionTbl |
数百件 |
セッション管理 |
有効期間のみ |
| fileDownLoadLogTbl |
数万件 |
ファイルダウンロードログ |
1年 |
| pdfbatchmngtbl |
数千件 |
PDFバッチ管理 |
無期限 |
テーブル命名規則
プレフィックス
| プレフィックス |
用途 |
例 |
| T_ |
トランザクションテーブル |
T_ISHOKU_KIHON |
| AMED_ |
AMED出力テーブル |
AMED_LIVER |
| なし(小文字) |
マスタ・管理テーブル |
mcd_mst |
サフィックス
| サフィックス |
用途 |
例 |
| _LIV |
生体移植専用テーブル |
T_ISHOKU_KIHON_LIV |
| _R_LIV |
受者追跡(生体) |
T_LIVING_R_LIV |
| _D_LIV |
ドナー追跡(生体) |
T_LIVING_D_LIV |
| Mst |
マスタテーブル |
institutionMst |
| Tbl |
管理系テーブル |
accountTbl |
データ整合性
外部キー制約
主要な外部キー制約:
-- 施設コードによる制約
FOREIGN KEY (SISETU_CD) REFERENCES institutionMst(SISETU_CD)
-- 生体移植基本 → 臓器別詳細
FOREIGN KEY (SEITAI_ISYOKU_ID) REFERENCES T_ISHOKU_KIHON_LIV(SEITAI_ISYOKU_ID)
ON DELETE CASCADE
-- 生体移植 → ドナー
FOREIGN KEY (SEITAI_ISYOKU_ID) REFERENCES T_ISHOKU_KIHON_LIV(SEITAI_ISYOKU_ID)
ON DELETE CASCADE
-- ドナー基本 → ドナー詳細
FOREIGN KEY (DONOR_A_ID) REFERENCES T_DONOR_LIV(DONOR_A_ID)
ON DELETE CASCADE
NOT NULL制約
必須項目:
- SEITAI_ISYOKU_ID: 生体移植ID(全生体移植テーブル)
- SITAI_ISYOKU_ID: 死体移植ID(全死体移植テーブル)
- SISETU_CD: 施設コード(全移植テーブル)
- ZOKI_CODE: 臓器コード(全移植基本テーブル)
- ISYOKU_DATE: 移植日(全移植基本テーブル)
UNIQUE制約
一意制約:
- TRACER_ID: TRACER旧システムID(T_ISHOKU_KIHON_LIV)
- RECIPIENT_ID: レシピエントID(T_ISHOKU_KIHON_LIV)
- JOT_ID: JOT識別ID(T_ISHOKU_KIHON, T_DONOR)
インデックス戦略
検索性能最適化
-- 施設コード + 移植日
CREATE INDEX IDX_KIHON_LIV_SEARCH
ON T_ISHOKU_KIHON_LIV(SISETU_CD, ISYOKU_DATE, ZOKI_CODE);
-- TRACER_ID検索
CREATE INDEX IDX_KIHON_LIV_TRACER
ON T_ISHOKU_KIHON_LIV(TRACER_ID);
-- レシピエントID検索
CREATE INDEX IDX_KIHON_LIV_RECIPIENT
ON T_ISHOKU_KIHON_LIV(RECIPIENT_ID);
-- 経過観察記録日
CREATE INDEX IDX_LIVING_R_DATE
ON T_LIVING_R_LIV(SEITAI_ISYOKU_ID, KIROKU_DATE);
バックアップ戦略
フルバックアップ
頻度: 毎日深夜2:00
保持期間: 30日間
mysqldump -u root -p TRACERDB7 \
--single-transaction \
--routines \
--triggers \
> /backup/TRACERDB7_$(date +%Y%m%d).sql
差分バックアップ
頻度: 6時間ごと
対象: トランザクションテーブルのみ
保持期間: 7日間
パフォーマンス考慮事項
スロークエリ対策
slow_query_log = ON
long_query_time = 2 (2秒以上)
- 定期的なEXPLAIN分析実施
テーブルメンテナンス
-- 月次実行
ANALYZE TABLE T_ISHOKU_KIHON_LIV;
ANALYZE TABLE T_DONOR_LIV;
OPTIMIZE TABLE accessLogTbl; -- ログテーブル最適化
パーティショニング(検討中)
大規模ログテーブルのパーティショニング:
-- accessLogTblを月次パーティション化
ALTER TABLE accessLogTbl
PARTITION BY RANGE (YEAR(ACCESS_TIME) * 100 + MONTH(ACCESS_TIME)) (
PARTITION p202501 VALUES LESS THAN (202502),
PARTITION p202502 VALUES LESS THAN (202503),
...
);
データ移行時の注意事項
移行順序
- マスタテーブル
- アカウントテーブル
- 死体移植テーブル
- 生体移植テーブル(基本 → 詳細 → 追跡)
整合性チェック
-- 施設コード整合性チェック
SELECT SISETU_CD FROM T_ISHOKU_KIHON_LIV
WHERE SISETU_CD NOT IN (SELECT SISETU_CD FROM institutionMst);
-- 孤立レコードチェック
SELECT SEITAI_ISYOKU_ID FROM T_ISHOKU_KIHON_LIVER_LIV
WHERE SEITAI_ISYOKU_ID NOT IN (SELECT SEITAI_ISYOKU_ID FROM T_ISHOKU_KIHON_LIV);
関連ドキュメント