コンテンツにスキップ

データベース概要

システム構成

データベース管理システム: 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),
  ...
);

データ移行時の注意事項

移行順序

  1. マスタテーブル
  2. アカウントテーブル
  3. 死体移植テーブル
  4. 生体移植テーブル(基本 → 詳細 → 追跡)

整合性チェック

-- 施設コード整合性チェック
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);

関連ドキュメント