住民記録システム Web版 ER図

準拠:住民記録システム標準仕様書 第6.1版(令和8年3月25日)/ 第3章 1.管理項目・4.異動・5.証明 ほか/ データ要件・連携要件標準仕様書

1. 全体ER(コア)

凡例:PK=主キー、FK=外部キー、SCD-2=Slowly Changing Dimension Type2(履歴保持)
erDiagram RESIDENT ||--o| RESIDENT_FOREIGNER : "1:0..1" RESIDENT ||--o{ RESIDENT_HISTORY : "1:N (SCD-2)" RESIDENT ||--o{ ALIAS_NAME : "通称・旧氏" RESIDENT ||--o{ JUMIN_CODE : "住民票コード履歴" RESIDENT ||--o{ MY_NUMBER : "個人番号履歴" RESIDENT }o--|| HOUSEHOLD : "現世帯" RESIDENT ||--o{ HOUSEHOLD_MEMBER : "世帯所属(履歴)" HOUSEHOLD ||--o{ HOUSEHOLD_MEMBER : "1:N" RESIDENT ||--o{ RESTRICTION : "DV等支援措置" RESIDENT ||--o{ TRANSACTION : "対象住民" TRANSACTION ||--o{ TRANSACTION_ITEM : "項目別変更" TRANSACTION }o--|| TRANSACTION_TYPE : "区分(届出/職権)" TRANSACTION ||--o{ TRANSACTION_APPROVAL : "決裁ルート" TRANSACTION ||--o{ CERTIFICATE_ISSUE : "発行起点(任意)" RESIDENT ||--o{ CERTIFICATE_ISSUE : "発行履歴" USER_ACCOUNT ||--o{ AUDIT_LOG : "1:N" USER_ACCOUNT }o--o{ ROLE : "M:N (USER_ROLE)" ROLE ||--o{ PERMISSION : "1:N" LINK_PARTNER ||--o{ LINK_EVENT : "連携イベント" TRANSACTION ||--o{ LINK_EVENT : "派生連携" REPORT_REQUEST }o--|| USER_ACCOUNT : "依頼者" RESIDENT { varchar resident_id PK "宛名番号" varchar household_id FK varchar family_name_kanji varchar given_name_kanji varchar family_name_kana varchar given_name_kana date birth_date char sex varchar nationality "外国人時" varchar address_code varchar address_text date moved_in_date date moved_out_date boolean restricted_flag timestamp valid_from timestamp valid_to } RESIDENT_FOREIGNER { varchar resident_id PK,FK varchar residence_status date residence_period_end varchar passport_no varchar nationality_full varchar alias_kanji "通称" boolean special_permanent_resident } HOUSEHOLD { varchar household_id PK varchar head_resident_id FK varchar address_code varchar address_text date established_date date closed_date } HOUSEHOLD_MEMBER { varchar household_id PK,FK varchar resident_id PK,FK varchar relation_to_head date joined_date date left_date } RESIDENT_HISTORY { varchar resident_id PK,FK timestamp valid_from PK timestamp valid_to jsonb snapshot "全項目スナップショット" varchar transaction_id FK } ALIAS_NAME { bigint alias_id PK varchar resident_id FK varchar kind "通称/旧氏" varchar value_kanji varchar value_kana date valid_from date valid_to } JUMIN_CODE { bigint id PK varchar resident_id FK varchar code "11桁" date valid_from date valid_to varchar event "付番/変更/修正" } MY_NUMBER { bigint id PK varchar resident_id FK varchar number "12桁(暗号化)" date valid_from date valid_to varchar event } RESTRICTION { bigint restriction_id PK varchar resident_id FK varchar category "DV/ストーカー/児童虐待" date start_date date end_date varchar scope "本人/世帯" varchar release_role text note } TRANSACTION { varchar transaction_id PK varchar resident_id FK varchar household_id FK varchar type_code FK "届出/職権/取消等" varchar reason_code date event_date "異動年月日" date processed_date varchar receiver_office varchar status "起票/審査/承認/反映/取消" varchar parent_transaction_id FK "取消元" } TRANSACTION_TYPE { varchar code PK varchar name varchar category "届出/職権/連動/取消" } TRANSACTION_ITEM { varchar transaction_id PK,FK varchar field PK text value_before text value_after } TRANSACTION_APPROVAL { bigint id PK varchar transaction_id FK int step varchar role varchar approver_user_id FK varchar status text comment timestamp acted_at } CERTIFICATE_ISSUE { bigint issue_id PK varchar resident_id FK varchar transaction_id FK varchar form_id "0010001 等" int copies varchar usage_text int fee varchar verify_token "改ざん防止" timestamp issued_at varchar issuer_user_id FK varchar channel "窓口/コンビニ/オンライン" } USER_ACCOUNT { varchar user_id PK varchar oidc_subject varchar employee_no varchar department varchar full_name boolean active } ROLE { varchar role_id PK varchar name text description } USER_ROLE { varchar user_id PK,FK varchar role_id PK,FK date valid_from date valid_to } PERMISSION { varchar role_id PK,FK varchar resource PK "機能/項目" varchar action PK "view/edit/approve" varchar mask "個人番号 等" } AUDIT_LOG { bigint log_id PK varchar user_id FK varchar ip varchar action varchar resource_type varchar resource_id timestamp occurred_at jsonb details } LINK_PARTNER { varchar partner_id PK varchar name "CS/番号/戸籍/税/国保/選挙/申請管理" varchar endpoint varchar protocol } LINK_EVENT { bigint event_id PK varchar partner_id FK varchar transaction_id FK varchar direction "in/out" timestamp occurred_at varchar status jsonb payload } REPORT_REQUEST { bigint report_id PK varchar requester_user_id FK varchar template_id jsonb params varchar status varchar file_path timestamp created_at }

2. 履歴管理(SCD-2)の考え方

3. 抑止・権限(10.3 / 10.4)

4. インデックス指針(PostgreSQL)

テーブルインデックス用途
resident(family_name_kana, given_name_kana)カナ検索
resident(birth_date)生年月日絞り込み
residentGIN (address_text gin_trgm_ops)住所あいまい検索
residentUNIQUE (jumin_code) WHERE valid_to IS NULL現行コード一意
my_numberUNIQUE (number_hash) WHERE valid_to IS NULL重複検知
resident_history(resident_id, valid_from DESC)時点照会
transaction(resident_id, event_date DESC)履歴一覧
audit_log(occurred_at, user_id)監査参照

5. ソース(Mermaid)コピー用

展開して全文を表示/コピー
erDiagram
  (上のMermaid図の本文を参照)