《2022年校园一卡通数据库部分设计 .pdf》由会员分享,可在线阅读,更多相关《2022年校园一卡通数据库部分设计 .pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、一卡通系统1.E-R 图管理员用户学生设备卡刷卡管理管理充值管理设 备 编 号地点卡号余额学号截止日期发卡日期状态学号性别姓名名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 5 页 - - - - - - - - - 2.ER 模型到关系模型的转换学生(学号,姓名,性别)主键卡(卡号,学号,状态,余额,发卡日期,截止日期)主键外键设备(设备编号,地点)主键充值(充值服务编号,卡号,学号,充值金额,充值日期)主键外键外键刷卡(本次消费编号,设备编号,卡号,消费金额,消费时间
2、)主键外键外键3.建表 sql语句create table 刷卡(本次消费号number primary key, 设备编号number, 卡号number,foreign key(设备编号 ) references 设备(设备编号 ),foreign key(卡号) references 卡(卡号) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 5 页 - - - - - - - - - ); create table 学生(学号 varchar2(10) prima
3、ry key, 姓名varchar2(20), 性别varchar2(5)); create table 充值(充值服务编号varchar(10)primary key, 卡号number, 学号number, 充值金额number, 充值日期date,foreign key(学号) references 卡(学号),foreign key(卡号) references 卡(卡号) ); create table 卡(卡号 number primary key, 学号number, 状态varchar(5), 余额number, 发卡日期date, 名师资料总结 - - -精品资料欢迎下载 -
4、 - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 5 页 - - - - - - - - - 截止日期date ); create table 设备(设备编号varchar2(10) primary key, 地点varchar2(20)); 4.索引设计1. 对学生表按学号建立索引,可加快对学生用户查询:index_student Create index index_student on 学生( 卡号); 2. 对一卡通信息表的挂失字段建立索引:index_card_lost Create index index
5、_card_lost on 卡(状态) ;5.触发器充值触发器create or replace trigger cards_info after insert on 充值for each row begin UPDATE 卡 SET 余额 = 卡.余额 +new.充值金额WHERE 充值 .卡号= 卡.卡号end; 刷卡触发器create or replace trigger cards_info after insert on 刷卡for each row begin 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心
6、整理 - - - - - - - 第 4 页,共 5 页 - - - - - - - - - UPDATE 卡 SET 余额 = 卡.余额 +new.消费金额WHERE 刷卡 .卡号= 卡.卡号end; 6.各个业务功能对应的SQL 语句、存储过程发卡create or replace procedure 发_卡(start_card IN 卡.卡号%TYPE,end_card IN 卡.卡号%TYPE, start_stu_number IN 学生.学号%TYPE,end_stu_number IN学生.学号%TYPE) IS j int; begin j:=start_stu_number
7、; CREATE OR REPLACE PROCEDURE 插入_卡(start_card IN卡.卡号%TYPE,end_card IN 卡.卡号%TYPE, start_time IN 卡.发卡时间 %TYPE,end_time IN 卡.截止时间 %TYPE) IS BEGIN FOR i IN start_card.end_card LOOP insert into cards values(i,NULL,0,0,start_time,end_time); END LOOP; END; / if end_card-start_card=end_stu_number-start_stu_
8、number then for i in start_card.end_card LOOP update 卡 set 卡号=i where 学号=j; j:=j+1; end loop; end if; end; create or replace procedure 发卡(num1 卡.卡号%TYPE,num2 卡.卡号%TYPE, money 卡.余额%TYPE, start_time 卡.发卡时间 %TYPE,end_time 卡.截止时间 %TYPE, start_stu_number 学生.学号%TYPE,end_stu_number 学生.学号%TYPE)IS begin 插入_卡(num1,num2,1,start_time,end_time); 发_卡(num1,num2,start_stu_number,end_stu_number); end; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 5 页 - - - - - - - - -