类似股票交易系统的DB底层的关键表设计

用户的几个关键的行为有 : 转入钱、转出钱、买入ETF、卖出ETF;

实践下来,最中重要的几块有:用户的账户流水、用户账户的总金额、用户的订单流水;买入|卖出操作会产生的有:

1、信息流->产生买|卖操作相关的ETF名称、操作的数量和价格的记录,通常称做订单;

2、用户的账户的资金会相应的增加会减少,相对应的产生订单现金流水;

CREATE TABLE `account` (
  `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '自增长Id',
  `uid` INT(11) NOT NULL COMMENT '用户ID',
  `totalAmtE2` INT(11) DEFAULT NULL COMMENT '当前账户总金额',
  `availableAmtE2` INT(11) DEFAULT NULL COMMENT '剩余可用金额(开盘前出现委托单的时候,剩余可用金额要相应的减少)',
  `state` SMALLINT(1) DEFAULT '1' COMMENT '0、无效 1、有效、2、状态废弃 3、状态待使用 4、已全部卖出',
  `createTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`)

) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='用户账户的总金额表'


CREATE TABLE `order` (

  `orderId` INT(11) NOT NULL AUTO_INCREMENT COMMENT '自增长ID',

`uniqueId` varchar(100) NOT NULL DEFAULT '""' COMMENT 'uniqueId',

  `uid` INT(11) NOT NULL COMMENT '用户uid',
  `etfId` INT(11) NOT NULL COMMENT '股票代码',
  `contractNo` VARCHAR(100) NOT NULL COMMENT '合同号',
  `reqAmount` INT(11) NOT NULL COMMENT '委托购买数量',
  `validAmount` INT(11) NOT NULL COMMENT '有效的成交数量',
  `reqPriceE2` INT(11) NOT NULL DEFAULT '0' COMMENT '委托价格',
  `originPriceE2` INT(11) NOT NULL COMMENT '购买原始价格',
  `orderPriceE2` INT(11) NOT NULL COMMENT '算入手续费后的购买价格',
  `orderType` TINYINT(1) NOT NULL DEFAULT '0' COMMENT '操作类型: 0、买|卖委托 1、已撤单 2、购买|卖出成功 3、已结算',
  `opType` TINYINT(1) NOT NULL DEFAULT '0' COMMENT '操作类型: 0、购买 1、卖出',
  `createTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `orderTime` TIMESTAMP NULL DEFAULT NULL COMMENT '订单的生成时间',
  `cancelTime` TIMESTAMP NULL DEFAULT NULL COMMENT '订单取消时间',
  `lastUpdateTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`orderId`)

) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='订单表(ETF购买价格数量表)'



CREATE TABLE `order_bill` (
  `billId` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增长Id',
  `uniqueId` varchar(100) NOT NULL COMMENT '每次买卖的uniqueId',
  `uid` int(11) NOT NULL COMMENT '订单号',
  `feeE2` int(11) NOT NULL DEFAULT '0' COMMENT '手续费',
  `cashE2` int(11) NOT NULL COMMENT '剩余可用现金',
  `changeAmtE2` int(11) NOT NULL COMMENT '每次变更的钱',
  `beforeAmtE2` bigint(11) NOT NULL COMMENT '账户改变之前剩余的钱',
  `afterAmtE2` bigint(11) NOT NULL COMMENT '账户改变之前剩余的钱',
  `accountType` tinyint(1) NOT NULL DEFAULT '4' COMMENT '用户账号类型0-4',
  `opType` tinyint(1) NOT NULL DEFAULT '4' COMMENT '0 买 1、卖 2、分拆|分红',
  `state` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1、有效 0、无效',
  `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`billId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8  COMMENT='订单-账户资金流水'



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值