数据库实验八:水果商店综合

一、实验要求

1.根据实验一~五描述其应用需求(可根据题来说明)
2.设计并绘出此数据库的E-R图
3.将E-R图转换成关系模式
4.针对已给定的数据库及应用需求,提出优化或改进措施并实现(至少三项)。

二、实验内容

1.应用需求

实验一:创建数据库fruitshop及用户、水果、订单等相关信息的数据表,用以展示数据及进行导入导出等操作。
实验二:利用简单查询和多表查询,可快速从数据库中查找到所需要的信息。
实验三:能够根据实际需要创建不同的用户并授以不同的权限,方便系统管理;且能针对不同级别的用户定义不同的视图,以保证系统的安全性。
实验四:创建存储过程、游标,通过属性匹配,在表中实现自动操作。
实验五:添加触发器对表中数据进行操作,免于手工启动,由事件来触发,更加灵活方便,且保证了数据完整性。

2.E-R图

在这里插入图片描述

3.关系模式

客户(客户编号,客户名,客户地址,城市,邮编,联系人,电子邮箱)
订单(订单号,订单项,购入数量,单价)
水果(水果编号,水果名,价格,库存数量)
供应商(供应商编号,供应商名,城市,邮编,电话)
提交(订购日期,客户编号,订单号)
订购(订单号,订单项,水果编号)
提供(供应商编号,水果编号)

4.功能改进

①查询当前销量最好的水果,考虑下次增加其进货量。
源码:

SELECT* FROM(
	SELECT f_id,sum(quantity) FROM orderitems
	GROUP BY f_id
	ORDER BY sum(quantity) DESC)s LIMIT 1

运行截图:
在这里插入图片描述
②限制每一位客户每次购买的水果不能超出库存量。
源码:

CREATE TRIGGER lim_fruits BEFORE INSERT ON fruits FOR EACH ROW 
	BEGIN
		DECLARE f_quantity INT;
		SELECT quantity INTO f_quantity FROM fruits WHERE fruits.f_id=new.f_id;
		IF f_quantity<new.quantity THEN
			SIGNAL SQLSTATE 'HY000' SET message_text='购买数量不得超过商品库存!';
		END IF;

	END

运行截图:
在这里插入图片描述
③在customers表中直接展示客户已购买订单得总价格。
源码:

ALTER TABLE customers
ADD ex_price DECIMAL(8,2)

CREATE PROCEDURE add_price()
	BEGIN
	DECLARE ex_num INT;
	DECLARE ex_price decimal(8,2); 
	DECLARE ex_update CURSOR FOR SELECT sum(pay) AS ex_sum FROM orders;
	DECLARE CONTINUE HANDLER FOR NOT FOUND SET ex_num=1;
	SET ex_num=0;

OPEN ex_update;
FETCH next FROM ex_update INTO ex_price;
WHILE (ex_num=0) DO
	UPDATE customers SET ex_price =(SELECT sum(pay)AS ex_sum FROM orders
	WHERE orders.c_id = customers.c_id);

FETCH next FROM ex_update INTO ex_price;

END WHILE;

CLOSE ex_update;
END

运行截图:
在这里插入图片描述

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Moonee_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值