12信管4 团队45搞什么鬼细化迭代3文档(4.3)

4.3 数据库设计

1、销售开单用例和收银用例的ER图

12信管4 团队45搞什么鬼细化迭代3文档(4.3)

 

2、销售开单用例和收银用例数据库sql文件

(1)销售单sale_order

-- ----------------------------
-- Table structure for sale_order
-- ----------------------------
DROP TABLE IF EXISTS `sale_order`;
CREATE TABLE `sale_order` (
  `id` int(60) NOT NULL AUTO_INCREMENT,
  `sale_order_id` varchar(60) NOT NULL COMMENT '销售单号',
  `customer_id` int(11) DEFAULT NULL COMMENT '会员',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `state` varchar(30) NOT NULL DEFAULT '0' COMMENT '状态,0代表未支付,1代表已支付,2代表挂账',
  `total_price` double(40,2) NOT NULL COMMENT '总金额',
  `amount` int(40) NOT NULL COMMENT '总数量',
  `receivable` double(40,1) NOT NULL COMMENT '应收金额(折后金额)',
  PRIMARY KEY (`id`),
  UNIQUE KEY `sale_order_id` (`sale_order_id`),
  KEY `sale_order_ibfk_1` (`customer_id`),
  CONSTRAINT `sale_order_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `member` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=120 DEFAULT CHARSET=utf8;

 

(2)销售明细表sale_order_items

-- ----------------------------
-- Table structure for sale_order_items
-- ----------------------------
DROP TABLE IF EXISTS `sale_order_items`;
CREATE TABLE `sale_order_items` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `sale_order_id` int(60) NOT NULL,
  `good_id` int(60) NOT NULL,
  `quantity` int(60) NOT NULL,
  `price` double NOT NULL,
  PRIMARY KEY (`id`),
  KEY `sale_order_items_ibfk_2` (`good_id`),
  KEY `sale_order_items_ibfk_1` (`sale_order_id`),
  CONSTRAINT `sale_order_items_ibfk_1` FOREIGN KEY (`sale_order_id`) REFERENCES `sale_order` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `sale_order_items_ibfk_2` FOREIGN KEY (`good_id`) REFERENCES `goods` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=197 DEFAULT CHARSET=utf8;

(3)支付单payment

-- ----------------------------
-- Table structure for payment
-- ----------------------------
DROP TABLE IF EXISTS `payment`;
CREATE TABLE `payment` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `payment_id` varchar(20) NOT NULL,
  `payment_method` varchar(10) DEFAULT NULL,
  `sale_order_id` int(11) NOT NULL,
  `create_time` datetime NOT NULL,
  `real_pay` double(60,1) NOT NULL COMMENT '实收金额',
  `changes` double(60,1) NOT NULL COMMENT '找零',
  `user_id` int(11) NOT NULL COMMENT '收银员',
  PRIMARY KEY (`id`),
  UNIQUE KEY `payment_id` (`payment_id`),
  KEY `payment_ibfk_1` (`sale_order_id`),
  KEY `payment_ibfk_2` (`user_id`),
  CONSTRAINT `payment_ibfk_1` FOREIGN KEY (`sale_order_id`) REFERENCES `sale_order` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `payment_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=43 DEFAULT CHARSET=utf8;

 

3、使用到的存储过程和触发器

(1)存储过程: 每个季度清空会员积分

更新会员积分的函数resetIntegral():

BEGIN
update member SET integral = 0;
END

(2)触发器

每季度调用一次触发器e_resetIntegral:

CREATE EVENT if not exists e_resetIntegral
on schedule every 1 quarter 
on completion preserve 
do call resetIntegral();

 


你可能感兴趣的:(12信管4 团队45搞什么鬼细化迭代3文档(4.3))