PostgreSQLでの給与DBの作成
Q&A
Closed
解決したいこと
PostgreSQLで自分の給与DBを作ろうとしています。
私以外のデータの登録はありません。
自分で作成したSQLをchatGPTにレビューを依頼したらいくつか修正点が出てきました。
[incomes]や[deductions]テーブルにsalary_idやincome_item_id、deduction_item_idを付与しなければいけないのでしょうか
よろしくお願いいたします。
私が作成したSQL
-- 給与日テーブル
CREATE TABLE salaries (
id SERIAL PRIMARY KEY,
salary_date DATE NOT NULL, -- 給与支給日
salary_type VARCHAR(20) NOT NULL CHECK (salary_type IN ('給与', '賞与')) -- タイプ(給与または賞与)
);
-- 収入勘定項目
CREATE TABLE income_items (
id SERIAL PRIMARY KEY,
account_name VARCHAR(100) NOT NULL
);
-- 収入テーブル
CREATE TABLE incomes (
id SERIAL PRIMARY KEY REFERENCES income_items(id),
amount NUMERIC(10,2) NOT NULL CHECK (amount > 0)
);
-- 控除勘定項目
CREATE TABLE deduction_items (
id SERIAL PRIMARY KEY,
account_name VARCHAR(100) NOT NULL -- 勘定項目
);
-- 控除テーブル
CREATE TABLE deductions (
id SERIAL PRIMARY KEY REFERENCES deduction_items(id),
amount NUMERIC(10,2) NOT NULL CHECK (amount > 0)
);
chatGPTが出力したSQL
-- 給与テーブル
CREATE TABLE salaries (
id SERIAL PRIMARY KEY,
salary_date DATE NOT NULL, -- 給与支給日
salary_type VARCHAR(20) NOT NULL CHECK (salary_type IN ('給与', '賞与')) -- タイプ(給与または賞与)
);
-- 収入勘定項目
CREATE TABLE income_items (
id SERIAL PRIMARY KEY,
account_name VARCHAR(100) NOT NULL
);
-- 収入テーブル
CREATE TABLE incomes (
id SERIAL PRIMARY KEY,
salary_id INTEGER NOT NULL REFERENCES salaries(id), -- salariesテーブルとのリレーション追加
income_item_id INTEGER NOT NULL REFERENCES income_items(id), -- income_itemsテーブルとのリレーション追加
amount NUMERIC(10,2) NOT NULL CHECK (amount > 0)
);
-- 控除勘定項目
CREATE TABLE deduction_items (
id SERIAL PRIMARY KEY,
account_name VARCHAR(100) NOT NULL -- 勘定項目
);
-- 控除テーブル
CREATE TABLE deductions (
id SERIAL PRIMARY KEY,
salary_id INTEGER NOT NULL REFERENCES salaries(id), -- salariesテーブルとのリレーション追加
deduction_item_id INTEGER NOT NULL REFERENCES deduction_items(id), -- deduction_itemsテーブルとのリレーション追加
amount NUMERIC(10,2) NOT NULL CHECK (amount > 0)
);
2