-- 账户表 CREATE TABLE account ( a_id SERIAL PRIMARY KEY, -- 账户号 balance MONEY, -- 余额 meta JSONB -- 元数据 ); -- {"name":"name", -- time:"2022-02-02", -- “budget": [ -- {"time":"2022-02","value":20.32}, -- {"time":"2022-01","value":30.32} -- ] -- "discription":"something"} -- 类别表 CREATE TABLE category ( c_id SERIAL PRIMARY KEY, -- 类别号 meta JSONB -- 元数据 ); -- {"name":"name", -- "type":"in"/"out", -- “budget": [ -- {"time":"2022-02","value":20.32}, -- {"time":"2022-01","value":30.32} -- ] -- "discription":"something"} -- 流水表 CREATE TABLE transaction ( t_id SERIAL PRIMARY KEY, -- 流水号 a_id INTEGER REFERENCES account(a_id) NOT NULL, -- 关联账户号 c_id INTEGER REFERENCES category(c_id), -- 关联类别号 s_id INTEGER REFERENCES category(c_id), -- 源账户号 time TIMESTAMP, amount MONEY, meta JSONB -- 元数据 ); -- {"discription":"something",(可选) -- "type":"in"/"out"/"transfer"/"init"/"modify", -- "reimburse":{ (报销) -- "finish": true, -- "ref":t_id -- } -- "":"something"}