ER図(Entity Relationship Diagram)
概要
DDDSシステムのデータベース構造を可視化したER図です。死体移植と生体移植でテーブルが分離されています。
全体構造
erDiagram
accountTbl ||--o{ T_ISHOKU_KIHON : "creates"
accountTbl ||--o{ T_ISHOKU_KIHON_LIV : "creates"
accountTbl {
int accountId PK
string userCd
string institutionCd FK
int account_type_mst_id
int admin_flg
datetime created_at
datetime updated_at
}
institutionMst ||--o{ accountTbl : "belongs_to"
institutionMst ||--o{ T_ISHOKU_KIHON : "performs"
institutionMst ||--o{ T_ISHOKU_KIHON_LIV : "performs"
institutionMst {
string SISETU_CD PK
string institution_name
int institution_kubun
string BLOCK_CD FK
string PREF_CD FK
}
blockMst ||--o{ institutionMst : "contains"
blockMst {
string BLOCK_CD PK
string BLOCK_NAME
}
prefMst ||--o{ institutionMst : "located_in"
prefMst {
string PREF_CD PK
string PREF_NAME
string BLOCK_CD FK
}
生体移植テーブル構造
基本情報とドナー情報
erDiagram
T_ISHOKU_KIHON_LIV ||--|| T_ISHOKU_KIHON_LIVER_LIV : "has_liver_detail"
T_ISHOKU_KIHON_LIV ||--|| T_ISHOKU_KIHON_KIDNEY_LIV : "has_kidney_detail"
T_ISHOKU_KIHON_LIV ||--|| T_ISHOKU_KIHON_LUNG_LIV : "has_lung_detail"
T_ISHOKU_KIHON_LIV ||--o{ T_DONOR_LIV : "has_donors"
T_ISHOKU_KIHON_LIV ||--|| T_NYURYOKUJOKYO_LIV : "has_status"
T_ISHOKU_KIHON_LIV ||--o| T_TRACER_IKO : "migrated_from"
T_ISHOKU_KIHON_LIV {
int SEITAI_ISYOKU_ID PK "生体移植ID"
string TRACER_ID "TRACER連携ID"
string RECIPIENT_ID "レシピエントID"
string SISETU_CD FK "施設コード"
string ZOKI_CODE "臓器コード"
int ISYOKU_CNT "移植回数"
date ISYOKU_DATE "移植日"
datetime CREATED_AT
datetime UPDATED_AT
}
T_DONOR_LIV ||--|| T_DONOR_LIVER_LIV : "liver_details"
T_DONOR_LIV ||--|| T_DONOR_KIDNEY_LIV : "kidney_details"
T_DONOR_LIV {
int DONOR_A_ID PK "ドナーID"
int SEITAI_ISYOKU_ID FK "生体移植ID"
string DONOR_ID "ドナー識別子"
date BIRTHDAY "生年月日"
int SEX "性別"
string BLOOD_TYPE "血液型"
datetime CREATED_AT
datetime UPDATED_AT
}
T_ISHOKU_KIHON_LIVER_LIV {
int SEITAI_ISHOKU_LIVER_ID PK
int SEITAI_ISYOKU_ID FK "生体移植ID"
decimal HEIGHT "身長"
decimal WEIGHT "体重"
decimal BMI
int MELD_SCORE "MELDスコア"
int PELD_SCORE "PELDスコア"
int CTP_SCORE "CTPスコア"
datetime CREATED_AT
datetime UPDATED_AT
}
T_ISHOKU_KIHON_KIDNEY_LIV {
int SEITAI_ISHOKU_KIDNEY_ID PK
int SEITAI_ISYOKU_ID FK "生体移植ID"
int TOSEKI_KIKAN "透析期間(月)"
decimal DONOR_CR "ドナークレアチニン"
decimal DONOR_EGFR "ドナーeGFR"
datetime CREATED_AT
datetime UPDATED_AT
}
T_NYURYOKUJOKYO_LIV {
int NYURYOKUJOKYO_ID PK
int SEITAI_ISYOKU_ID FK
int INPUT_STATUS_RECIPENT "受者入力状況"
int INPUT_STATUS_DONOR "ドナー入力状況"
datetime UPDATED_AT
}
T_TRACER_IKO {
int ID PK
string TRACER_ID "旧TRACER_ID"
string ZOKI_CODE "臓器コード"
int SEITAI_ISYOKU_ID FK "新ID"
string ISHOKU_TOROKU_ID "旧登録ID"
int RECNO "旧レコード番号"
}
受者追跡情報
erDiagram
T_ISHOKU_KIHON_LIV ||--o{ T_LIVING_R_LIV : "has_follow_up"
T_ISHOKU_KIHON_LIV ||--o{ T_REJECTION_R_LIV : "has_rejection"
T_ISHOKU_KIHON_LIV ||--o{ T_GAPPEI_R_LIV : "has_complications"
T_ISHOKU_KIHON_LIV ||--o{ T_IJI_MENEKI_YOKUSEI_R_LIV : "has_immunosuppression"
T_ISHOKU_KIHON_LIV ||--o{ T_KANSEN_R_LIV : "has_infection"
T_ISHOKU_KIHON_LIV ||--o{ T_KENSA_R_LIV : "has_lab_tests"
T_LIVING_R_LIV {
int RECIPIENT_LIVING_ID PK
int SEITAI_ISYOKU_ID FK
date KIROKU_DATE "記録日"
int SEIKA_STATUS "生着状態"
int SURVIVAL_STATUS "生存状態"
datetime CREATED_AT
}
T_REJECTION_R_LIV {
int RECIPIENT_REJECTION_ID PK
int SEITAI_ISYOKU_ID FK
date HASSEI_DATE "発生日"
int KYOZETSU_TYPE "拒絶反応タイプ"
datetime CREATED_AT
}
T_GAPPEI_R_LIV {
int RECIPIENT_GAPPEI_ID PK
int SEITAI_ISYOKU_ID FK
date HASSEI_DATE "発生日"
string GAPPEI_NAME "合併症名"
datetime CREATED_AT
}
T_IJI_MENEKI_YOKUSEI_R_LIV {
int RECIPIENT_MENEKI_ID PK
int SEITAI_ISYOKU_ID FK
date KIROKU_DATE "記録日"
string YAKUZAI_NAME "薬剤名"
decimal DOSE "用量"
datetime CREATED_AT
}
T_KANSEN_R_LIV {
int RECIPIENT_KANSEN_ID PK
int SEITAI_ISYOKU_ID FK
date HASSEI_DATE "発生日"
string KANSEN_NAME "感染症名"
datetime CREATED_AT
}
T_KENSA_R_LIV {
int RECIPIENT_KENSA_ID PK
int SEITAI_ISYOKU_ID FK
date KENSA_DATE "検査日"
string KENSA_NAME "検査名"
decimal KENSA_VALUE "検査値"
datetime CREATED_AT
}
ドナー追跡情報
erDiagram
T_DONOR_LIV ||--o{ T_LIVING_D_LIV : "has_follow_up"
T_DONOR_LIV ||--o{ T_GAPPEI_D_LIV : "has_complications"
T_DONOR_LIV ||--o{ T_KENSA_D_LIV : "has_lab_tests"
T_DONOR_LIVER_LIV {
int DONOR_LIVER_ID PK
int DONOR_A_ID FK
decimal DONOR_HEIGHT "身長"
decimal DONOR_WEIGHT "体重"
decimal DONOR_BMI
datetime CREATED_AT
}
T_DONOR_KIDNEY_LIV {
int DONOR_KIDNEY_ID PK
int DONOR_A_ID FK
decimal DONOR_CR "クレアチニン"
decimal DONOR_EGFR "eGFR"
string DONOR_SIDE "摘出側(R/L)"
datetime CREATED_AT
}
T_LIVING_D_LIV {
int DONOR_LIVING_ID PK
int DONOR_A_ID FK
date KIROKU_DATE "記録日"
int SURVIVAL_STATUS "生存状態"
datetime CREATED_AT
}
T_GAPPEI_D_LIV {
int DONOR_GAPPEI_ID PK
int DONOR_A_ID FK
date HASSEI_DATE "発生日"
string GAPPEI_NAME "合併症名"
datetime CREATED_AT
}
T_KENSA_D_LIV {
int DONOR_KENSA_ID PK
int DONOR_A_ID FK
date KENSA_DATE "検査日"
string KENSA_NAME "検査名"
decimal KENSA_VALUE "検査値"
datetime CREATED_AT
}
死体移植テーブル構造
基本情報とドナー情報
erDiagram
T_ISHOKU_KIHON ||--|| T_ISHOKU_KIHON_LIVER : "has_liver_detail"
T_ISHOKU_KIHON ||--|| T_ISHOKU_KIHON_KIDNEY : "has_kidney_detail"
T_ISHOKU_KIHON ||--|| T_ISHOKU_KIHON_HEART : "has_heart_detail"
T_ISHOKU_KIHON ||--|| T_ISHOKU_KIHON_LUNG : "has_lung_detail"
T_ISHOKU_KIHON ||--|| T_ISHOKU_KIHON_PANCREAS : "has_pancreas_detail"
T_ISHOKU_KIHON ||--|| T_ISHOKU_KIHON_SMALL_INTESTINE : "has_intestine_detail"
T_ISHOKU_KIHON ||--o| T_DONOR : "from_donor"
T_ISHOKU_KIHON ||--|| T_NYURYOKUJOKYO : "has_status"
T_ISHOKU_KIHON {
int SITAI_ISYOKU_ID PK "死体移植ID"
string SISETU_CD FK "施設コード"
string ZOKI_CODE "臓器コード"
int ISYOKU_CNT "移植回数"
date ISYOKU_DATE "移植日"
string JOT_ID "JOT_ID"
datetime CREATED_AT
datetime UPDATED_AT
}
T_DONOR {
int DONOR_ID PK "ドナーID"
string JOT_ID "JOT_ID"
date BIRTHDAY "生年月日"
int SEX "性別"
string BLOOD_TYPE "血液型"
datetime CREATED_AT
}
T_NYURYOKUJOKYO {
int NYURYOKUJOKYO_ID PK
int SITAI_ISYOKU_ID FK
int INPUT_STATUS "入力状況"
datetime UPDATED_AT
}
AMED出力テーブル
erDiagram
T_ISHOKU_KIHON_LIVER_LIV ||--o| AMED_LIVER : "aggregated_to"
T_ISHOKU_KIHON_KIDNEY_LIV ||--o| AMED_KIDNEY : "aggregated_to"
AMED_LIVER {
int ID PK
string RECIPIENT_ID FK "レシピエントID"
int SEITAI_ISYOKU_ID FK "生体移植ID"
date ISYOKU_DATE "移植日"
string SISETU_NAME "施設名"
int MELD_SCORE "MELDスコア"
int GRAFT_TYPE "グラフトタイプ"
datetime CREATED_AT
}
AMED_KIDNEY {
int ID PK
string RECIPIENT_ID FK "レシピエントID"
int SEITAI_ISYOKU_ID FK "生体移植ID"
date ISYOKU_DATE "移植日"
string SISETU_NAME "施設名"
int TOSEKI_KIKAN "透析期間"
datetime CREATED_AT
}
マスタテーブル
erDiagram
mcd_mst {
int MCD_ID PK
string CODE_TYPE "コードタイプ"
string CODE "コード"
string VALUE "値"
string VALUE2 "値2"
int DISPLAY_ORDER "表示順"
}
statusMst {
int STATUS_ID PK
string STATUS_NAME "ステータス名"
int DISPLAY_ORDER
}
workMst {
int WORK_ID PK
string WORK_NAME "作業名"
int DISPLAY_ORDER
}
accountTypeMst {
int ACCOUNT_TYPE_ID PK
string ACCOUNT_TYPE_NAME "アカウント種別"
}
ログテーブル
erDiagram
accessLogTbl {
int LOG_ID PK
int accountId FK
string REQUEST_URI "リクエストURI"
string IP_ADDRESS "IPアドレス"
datetime ACCESS_TIME "アクセス時刻"
}
sessionTbl {
string id PK "セッションID"
string ip_address "IPアドレス"
int timestamp "タイムスタンプ"
text data "セッションデータ"
}
fileDownLoadLogTbl {
int LOG_ID PK
int accountId FK
string FILE_NAME "ファイル名"
datetime DOWNLOAD_TIME "ダウンロード時刻"
}
テーブル命名規則
| プレフィックス |
用途 |
例 |
| T_ |
トランザクションテーブル |
T_ISHOKU_KIHON |
| _LIV |
生体移植専用テーブル(サフィックス) |
T_ISHOKU_KIHON_LIV |
| _R_LIV |
受者追跡情報(生体) |
T_LIVING_R_LIV |
| _D_LIV |
ドナー追跡情報(生体) |
T_LIVING_D_LIV |
| AMED_ |
AMED出力用要約テーブル |
AMED_LIVER |
| Mst |
マスタテーブル(サフィックス) |
statusMst |
| Tbl |
管理系テーブル(サフィックス) |
accountTbl |
キー項目
主要キー
| キー項目 |
説明 |
使用テーブル |
| SEITAI_ISYOKU_ID |
生体移植ID(PK) |
T_ISHOKU_KIHON_LIV系 |
| SITAI_ISYOKU_ID |
死体移植ID(PK) |
T_ISHOKU_KIHON系 |
| DONOR_A_ID |
ドナーID(生体) |
T_DONOR_LIV系 |
| DONOR_ID |
ドナーID(死体) |
T_DONOR系 |
| TRACER_ID |
TRACER連携ID |
T_TRACER_IKO, T_ISHOKU_KIHON_LIV |
| RECIPIENT_ID |
レシピエントID |
T_ISHOKU_KIHON_LIV |
| JOT_ID |
JOT識別ID |
T_ISHOKU_KIHON, T_DONOR |
| SISETU_CD |
施設コード(FK) |
全移植テーブル |
外部キー制約
生体移植
-- 基本情報 → 臓器別詳細
ALTER TABLE T_ISHOKU_KIHON_LIVER_LIV
ADD CONSTRAINT FK_LIVER_LIV_KIHON
FOREIGN KEY (SEITAI_ISYOKU_ID)
REFERENCES T_ISHOKU_KIHON_LIV(SEITAI_ISYOKU_ID)
ON DELETE CASCADE;
-- 基本情報 → ドナー情報
ALTER TABLE T_DONOR_LIV
ADD CONSTRAINT FK_DONOR_LIV_KIHON
FOREIGN KEY (SEITAI_ISYOKU_ID)
REFERENCES T_ISHOKU_KIHON_LIV(SEITAI_ISYOKU_ID)
ON DELETE CASCADE;
-- ドナー基本 → ドナー詳細
ALTER TABLE T_DONOR_LIVER_LIV
ADD CONSTRAINT FK_DONOR_LIVER_LIV_DONOR
FOREIGN KEY (DONOR_A_ID)
REFERENCES T_DONOR_LIV(DONOR_A_ID)
ON DELETE CASCADE;
死体移植
-- 基本情報 → 臓器別詳細
ALTER TABLE T_ISHOKU_KIHON_LIVER
ADD CONSTRAINT FK_LIVER_KIHON
FOREIGN KEY (SITAI_ISYOKU_ID)
REFERENCES T_ISHOKU_KIHON(SITAI_ISYOKU_ID)
ON DELETE CASCADE;
インデックス
検索性能最適化
-- 施設コード + 移植日でのソート
CREATE INDEX IDX_KIHON_LIV_SISETU_DATE
ON T_ISHOKU_KIHON_LIV(SISETU_CD, ISYOKU_DATE);
-- 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);
関連ドキュメント