おっす!おら税理くん!🔥
でも、手動で追加できるように、スキーマの内容をコピペできるように用意した! 以下の内容をREADME.md に貼り付けてくれ!👇
⸻
確定申告データ管理用スキーマ
確定申告データをPostgreSQLで管理するためのスキーマを定義します。
- 申告者情報(ユーザー)
CREATE TABLE tax_users (
id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL, -- 名前
my_number VARCHAR(12) UNIQUE, -- マイナンバー(暗号化推奨)
address TEXT NOT NULL, -- 住所
phone VARCHAR(20), -- 電話番号
email VARCHAR(255) UNIQUE NOT NULL, -- メールアドレス
tax_year INT NOT NULL CHECK (tax_year >= 2000), -- 申告年度
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
);
- 収入データ
CREATE TABLE income (
id SERIAL PRIMARY KEY,
user_id INT NOT NULL,
income_type VARCHAR(50) CHECK (income_type IN ('salary', 'business', 'miscellaneous', 'investment')),
source VARCHAR(255) NOT NULL,
amount NUMERIC(15, 2) NOT NULL,
tax_withheld NUMERIC(15, 2) DEFAULT 0,
payment_date DATE NOT NULL,
reference_number VARCHAR(50),
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW(),
FOREIGN KEY (user_id) REFERENCES tax_users(id) ON DELETE CASCADE
);
- 経費データ
CREATE TABLE expenses (
id SERIAL PRIMARY KEY,
user_id INT NOT NULL,
expense_type VARCHAR(50) CHECK (expense_type IN ('supplies', 'rent', 'utilities', 'advertising', 'travel', 'education', 'others')),
description TEXT NOT NULL,
amount NUMERIC(15, 2) NOT NULL,
payment_date DATE NOT NULL,
receipt_url TEXT,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW(),
FOREIGN KEY (user_id) REFERENCES tax_users(id) ON DELETE CASCADE
);
- 控除データ
CREATE TABLE deductions (
id SERIAL PRIMARY KEY,
user_id INT NOT NULL,
deduction_type VARCHAR(50) CHECK (deduction_type IN ('hometown_tax', 'medical', 'insurance', 'mortgage', 'others')),
description TEXT NOT NULL,
amount NUMERIC(15, 2) NOT NULL,
proof_url TEXT,
applied_date DATE NOT NULL,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW(),
FOREIGN KEY (user_id) REFERENCES tax_users(id) ON DELETE CASCADE
);
- 確定申告結果
CREATE TABLE tax_returns (
id SERIAL PRIMARY KEY,
user_id INT NOT NULL,
tax_year INT NOT NULL CHECK (tax_year >= 2000),
total_income NUMERIC(15, 2) NOT NULL,
total_expenses NUMERIC(15, 2) DEFAULT 0,
total_deductions NUMERIC(15, 2) DEFAULT 0,
taxable_income NUMERIC(15, 2) NOT NULL,
tax_amount NUMERIC(15, 2) NOT NULL,
tax_paid NUMERIC(15, 2) DEFAULT 0,
refund_amount NUMERIC(15, 2) DEFAULT 0,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW(),
FOREIGN KEY (user_id) REFERENCES tax_users(id) ON DELETE CASCADE
);
-
セキュリティ考慮
- マイナンバーは暗号化を推奨
- パスワードやセキュアな情報は別テーブルで管理
-
データの整合性
- 外部キー制約による参照整合性の確保
- CHECK制約による不正データの防止(年度、収入種別など)
-
監査証跡
- 全テーブルに作成日時・更新日時を記録
- 変更履歴の追跡が可能
graph TD
A[tax_users] --> B[income]
A --> C[expenses]
A --> D[deductions]
A --> E[tax_returns]
style A fill:#f9f,stroke:#333,stroke-width:4px
-
将来の機能追加に対応
- 収入種別、経費種別、控除種別は拡張可能
- 添付ファイルURLによる書類管理
-
分析機能のサポート
- 年度別の集計が容易
- 収入・経費のカテゴリ分析が可能
- 金額は NUMERIC(15, 2) で小数点以下2桁まで管理
- 日付、メールアドレスなど適切なデータ型を使用
- 必須項目には NOT NULL 制約