发布时间 : 星期一 文章销售订单数据库管理系统更新完毕开始阅读
values(@O_no,@p_no,@number);
IF EXISTS(SELECT * FROM send_for WHERE O_no=@O_no)--若有重复订单,则不予下单 print'该订单已有客户下了,请您新建订单' ELSE
IF EXISTS(SELECT * FROM product WHERE p_reserve<@number)-若产品库存量不足则订购 print'产品库存量不足,不能订购' ELSE
insert into send_for(o_no,p_no,number) values(@O_no,@p_no,@number); exec procedure_Order 2,5,12,4,5 drop procedure procedure_Order ;
2 触发器
(1)建立触发器:当插入了一条新的产品订购信息后,则激活该触发器,新的产品库存量等于旧库存量减去产品订购的数量。当insert执行时触发器就触发核对库存是否比订单量多,多的话就减少库存量,否则订单失败。
create trigger insert_send_for
on send_for instead of insert as begin update product
set p_reserve=p_reserve-(
select number from inserted)
where P_no=(select p_no from inserted) end;
insert into send_for values('9','2','1'); insert into send_for values('9','7','2');
(2)建立触发器:当插入了一条新的产品供应信息后,则激活该触发器,新的产品库存量等于旧库存量减去产品订购的数量。当insert执行时触发器就触发增加库存量。
create trigger insert_accommdate_relation
on accommdate_relation after insert as begin
update product
set p_reserve=p_reserve+(
select p_total from inserted
where p_no=(select p_no from inserted ) ) end;
insert into accommdate_relation values('1','4','200','6'); insert into accommdate_relation values('8','1','50','130');
3 查询
查询主要是对一些用户、产品、雇员、供应商等的一些内容的查询,例如:查询订单的数量意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤;查询客户的订单信息功能:查询客户的订单信息,目的:存储查询客户的订单信息的操作,意义:下次重复同样的动作时,可直接执行存储过
程,简化操作步骤;查询订单最多的客户信息,功能:查询订单最多的客户信息,目的:存储查询订单最多的客户信息的操作,意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤;查询客户信息,功能:查询客户信息,目的:存储查询客户信息的操作,意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤。也可以建立视图、存储结构后进行查询。以下是一些查询代码。
(1)查询号客户的订单 select *
from Order_table where C_no in (
select C_no from Client where C_no=4);
(2)查询姓名为“张斌”客户的订单信息
select O_no,Client.C_no,C_name,data from Order_table,Client
where Client.C_no=Order_table.C_no and Client.C_name='张斌'; (3)查询姓名为“张斌”客户的订单的产品名称 select P_name from Product where p_no in (
select p_no from send_for where O_no in (
select O_no from Order_table where C_no in ( select C_no from Client
where C_name='张斌' ) ));
(4)查询姓名为“张斌”客户的订单的产品名称 select Product.p_name,Client.C_name from Product,Order_table,Client,send_for
where Product.p_no=send_for.P_no and send_for.O_no=Order_table.O_no and Order_table.C_no=Client.C_no and Client.C_name='张斌'; (5)查询雇员工资最高的雇员的姓名 select E_name,E_wage from Employee
where E_wage >=all (
select E_wage from Employee ); (6)查询库存最多产品编号、名称和价格 select p_no,p_name,P_price from Product
where P_price >=all (
select P_price from Product);
(7)查询库存最多产品名称和库存 select p_name,p_reserve from Product
where p_reserve >= (
select MAX(p_reserve) from Product); (8)查询客户订单数的降序排列 select c_no,COUNT(o_no) from Order_table group by c_no
order by COUNT(o_no) DESC (9)查询客户订单数最多的客户编号create view view_order as
select c_no,COUNT(O_no) num from Order_table group by c_no; select c_no,num from view_order where num=(
select MAX(num) from view_order );
七、安全性设计
7.1 防止用户直接操作数据库的方法
(1)用户标识和鉴定
用户标识和鉴别是系统提供的最外层安全保护措施。其方法是由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供机器使用权。
(2)存取控制
数据库安全性所关心的主要是DBMS的存取控制机制。数据库安全最重要的一点就是确保只授权给由资格的用户访问数据库的权限,同时令所有未授权的人员无法接近数据,这主要通过数据库系统的存取控制机实现。
(3)数据加密
数据加密是防止数据库中数据在存储和传输中关系的有效字段。加密的基本思想是根据一定的算法讲原始数据变换为不可直接识别的格式,从而使得不知道解密算法的人无法获知数据的内容。
7.2 用户帐号密码的加密方法
为用户帐号密码加密,需要用程序实现,对用户的帐号密码实行加密算法,并在后台实现转换。
7.3 角色与权限
角色 ss 可以访问的表与列 可访问所有表 可访问所有表 可访问部分表 操作权限 完全控制权限 部分的控制权限 部分的操作权限 admin Employee_manage
八、数据库管理与维护说明
数据库维护计划设定完成之后,如果SQL Server代理是启动的,那么在\管理--SQL Server代理--作业\下面会自动生成若干自动维护的工作条目,并且每个条目都有相应的计划表,这个才是正常的。系统每天凌晨自动更新系统,删除未销卡记录。数据库维护计划非常强大,里面有各式各样对数据库的维护/备份操作,每样都可以设定不同的Schedule,当然,每设定一项,在JOB里面就会自动多出来一条。SQL Server Agent服务的正常运作是这一切的基础。系统每天凌晨更新后,自动备份数据库。