mysql 帐号余额和消费记录表设计?

mysql 帐号余额和消费记录表设计?,第1张

余额可以单独用一个余额记录表,这样如果要查询每次消费记录的时候,也能查出来每次消费后还有多少余额。余额记录表里面主要是三个字段:用户账号、每次消费后的余额、时间点。

CREATE TABLE account

(

id integer NOT NULL DEFAULT nextval('trade_id_seq'::regclass),

no character varying(10) NOT NULL, -- 账号

balance money NOT NULL DEFAULT 0.00, -- 余额

datetime timestamp without time zone NOT NULL DEFAULT (now())::timestamp(0) without time zone,

CONSTRAINT account_pkey PRIMARY KEY (id)

)

通过每次的余额变化就知道每次消费后的余额情况

select acc.*, (select sum(balance)+acc.balance from account as ac where ac.id <acc.id) as profit from account as acc

id | no | balance | datetime | profit

----+------+----------+---------------------+---------

1 | 1000 |$0.00 | 2013-10-09 10:51:10 |

2 | 1000 | $12.60 | 2013-10-09 10:51:22 | $12.60

4 | 1000 | $16.80 | 2013-10-09 10:51:42 | $29.40

5 | 1000 | $100.00 | 2013-10-09 10:51:49 | $129.40

6 | 1000 | $200.00 | 2013-10-09 10:56:35 | $329.40

7 | 1000 | $50.45 | 2013-10-09 10:57:23 | $379.85

8 | 1000 | $75.50 | 2013-10-09 10:57:31 | $455.35

9 | 1000 | -$55.30 | 2013-10-09 10:59:28 | $400.05

10 | 1000 | -$200.00 | 2013-10-09 10:59:44 | $200.05

(9 rows)

假设已经有一个用户表,每个用户有一个唯一ID。我们需要创建两张表,一张余额表,一张流水表:

CREATE TABLE `balance` ( `id` int NOT NULL AUTO_INCREMENT PRIMARY KEY, `user_id` int NOT NULL, `item` varchar(10) NOT NULL, `balance` decimal(20,2) NOT NULL) ENGINE=InnoDBCREATE TABLE `history` ( `id` int NOT NULL AUTO_INCREMENT PRIMARY KEY, `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `user_id` int NOT NULL, `item` varchar(10) NOT NULL, `amount` decimal(20,2) NOT NULL, `befor` decimal(20,2) NOT NULL, `after` decimal(20,2) NOT NULL, `business` varchar(30) NOT NULL, `business_id` varchar(100) NOT NULL, `detail` text) ENGINE=InnoDB

为了加快查询速度,另外为了有效利用 InnoDB 的行级锁,我们需要给两张表加上联合索引。另外,我们需要保证流水记录中 user_id, item, business, business_id 的组合是唯一的,避免重复更新数据

ALTER TABLE balance ADD INDEX `user_item_idx` (`user_id`, `item`)ALTER TABLE history ADD INDEX `user_item_idx` (`user_id`, `item`)ALTER TABLE history ADD UNIQUE update_unique (user_id, item, business, business_id)

以下是全套:EXCEL财务报表(带公式)的下载

全套EXCEL财务报表,包括适用于各行业的:凭证、总账、分类明细账(三拦和

有收入、支出、余额、应收款、应付款多栏)、科目账、T型账(丁字帐)、资产负债表(资产表)、利润表(损益表)、现金流量表、丁字帐(T型帐)、各行资产经营财务表格等等。带全套公式,只要把基本数据填写了,将自动生成汇总数据和相关数据,最大程度减少财务制表工作量。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8466205.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-16
下一篇 2023-04-16

发表评论

登录后才能评论

评论列表(0条)

保存