数据库应用大作业
实 验 报 告
课程名称: Oracle 数据库试验
实验项目: 校园一卡通的设计与实现
姓 名: 任秀虎
学 号: 13101192
班 级: 软件开发技术
校园一卡通的设计与实现
一 、引言:
1.1 背景
一卡通网 校园一卡通系统是数字化校园的基础工程,是数字化校园中有机的、重要的
组成部分。为数字化校园提供了全面的数据采集平台,结合学校的管理信息系统和网络,形
成全校范围的数字空间和共享环境。为学校管理人员提供具有开放性、灵活性、面向学校的
应用服务管理平台、是管理科学化的必要前提和基本途径。以校园一卡通系统为平台,实现
以人为本,并可充分利用银行的金融服务,实现“一卡在手,走遍校园”,必将满足学校数字
化建设的需求及目的。
1.2 简要需求说明
有多个校区,每个校区都有自己独立的服务器,校区间通过宽带连接,校园卡在校区间
可通用,前提是服务器之间数据要同步。
针对学校的实际情况,校园一卡通可以实现以下几个方面的功能:
1 电子钱包功能:校区内的所有的食堂,都可以使用一卡通进行交易。
2 管理(身份识别)功能:校内使用的各种证卡均可由校园一卡通代替,实现图书馆、
电子阅览室、学生公寓、考勤的身份识别一卡通。实现校内所有重要场所的出入门禁管理。
3
.金融功能:学生可以使用与校园卡关联的银行卡进行存取款、转账结算等金融业务
1.3 系统需求:
中心数据库:oracle11g
操作系统:Windows xp,Linux
内存要求:不小于 2G
交换空间:不小于 8G
工作站操作系统:Windows 2000/XP 等
系统容量:系统帐户容量 10 万,可以扩充
子系统接入数量:128 个,可以扩充
网络设置:根据学校建筑布局结合现有走线管道,并为安全性考虑,提供两种一卡通
网络的组建方案:
(1)在现有校园主干网中分一个 VLAN(虚拟局域网),将所有一卡通系统的计算
机全部接入这个 VLAN,以达到一卡通网络与校园网逻辑上分开互相不能访问。
(2)利用现有管道重新铺设线路并添置新的网络设置(交换机、集线器等),将一
卡通系统组成一个单独的网络,这样在物理上与校园网分开。
校区互联:应用代理服务器机制,代理服务器只接受用户的查询并转发服务器中的数
据,在代理服务器上运行专用的软件,定时负责与各个校区的服务器交换数据。
例图如下:
校区 A
校区 B
代 理
服 务
器
校区 C
1.4 系统设计原则:
安全、可靠、高效、易扩展
1.5 设计背景:
项目名称:校园一卡通系统
用户:大学或高级中学
1.6 参考资料:
1.《oracle10g:Program with PL/SQL》
2.《数据库系统概论》
3.CSDN 有关 Oracle 数据库资料
二 、数据库的物理结构设计
2.1 数据库设计:
全局数据库名称:orcl
数据库字符集选择 :采用 UTF8 字符集
数据库的 DB_FILES 设置 使用默认的值 200
OLTP 类型:db_block_size 用比较小的取值范围: 2048 或 4096
2.2 数据库控制文件配置:
D:\ORACLE\ORADATA\ORCL\CONTROL01.CTL
D:\ORACLE\ORADATA\ORCL\CONTROL02.CTL
D:\ORACLE\ORADATA\ORCL\CONTROL03.CTL
2.3 数据库重做日志文件配置:
D:\ORACLE\ORADATA\ORCL\REDO01.LOG
D:\ORACLE\ORADATA\ORCL\REDO02.LOG
D:\ORACLE\ORADATA\ORCLREDO03.LOG
三 、数据库的逻辑结构设计
3.1 有关表空间的设计与实现:
1、管理员信息表:
admin_info 记录系统管理者的有关信息,权限分三级,用数字 1,2,3 来表示,权
限大小递减
用户编号
姓名
密码
权限
Create table admin_info
(
admin_id varchar2(20) constraint admin_info_pk
admin_name varchar2(20) not null,
admin_password
admin_privilege number(1)
varchar2(15) not null,
primary key ,
);
2、用户信息表:
user_info 记录学生用户的有关信息
用户编号
姓名
信息卡号
性别
院系/部门
用户编号为学号或教职工编号
varchar2(20) constraint student_info_pk primary key ,
varchar2(20) not null,
Create table user_info
(
user_num
user_name
user_card_id varchar2(20) not null ,
user_sex
user_department
varchar2(4) not null,
varchar2(30) not null,
Constraint user_info_fk foreign key( user_card_id)
references user_info(user_num)
);
3、一卡通信息表:
info_card 记录一卡通用户的有关信息
信息卡号 用户编号
剩余金额
密 码
挂 失
0 表示为非挂失状态,1 表示为挂失状态
Create table info_card
(
varchar2(20),
card_num varchar2(20) primary key,
card_user_id
card_leftmoney number(10,2) ,
card_password varchar2(20) not null,
card_losted number(1) not null default(0),
Constraint info_card_fk foreign key( card_user_id)
references info_card(card_num)
);
4、流水帐消费记录表:
consume_info 记录用户消费情况
信息卡号
消费金额
消费日期
终端号
Create table consume_info
(
consume_num
consume_money
consume_date
concume_machine_id
varchar2(20) not null,
number(10,2) not null,
varchar2(20)
number(3) not null
not null,
);
5、存款/转账记录表:save_money 记录学生存款的情况
信息卡号
存款金额
存款日期
存款类型
操作员编号
此表记录学生存现、转账情况。
如果是转账:存款类型为 0
如果是存现:存款类型为 1
操作员编号为 POS 机的编号(自动编号为 0000)
Create table save_money
(
save_user_id
varchar2(20) primary key,
save_money
save_date
save_type
save_operator_id
number(10,2) not null,
varchar2(20)
number(1) not null default(0),
not null,
varchar2(6) not null
);
6、连接银行卡和一卡通的中间记录表(银校表):bank_campus
信息卡号
储蓄卡号
储蓄密码
储蓄折号
转账金额
身份证号
仅用来作为一卡通用户进行转账时的用户安全验证
Create table save_money
(
bank_campus_userid
bank_campus_banknum
bank_campus_bankpassword
bank_campus_bankbook
Bank_campus_transfer
bank_campus_idcard
varchar2(20) primary key,
varchar2(30) not null,
varchar2(6) not null,
varchar2(30) not null ,
number(10,2) not null default(50.00),
varchar2(20) not null
);
7、假设用户在银行开的账户表如下:bank_account
储蓄折号
储蓄卡号
储蓄密码
用户姓名
剩余金额
身份证号
Create table bank_account
(
bank_account_bankbookid
bank_account_banknum
bank_account_bankpassword
bank_account_name
Bank_account_leftmoney
bank_account_idcard
varchar2(30) primary key,
varchar2(30) not null,
varchar2(6) not null,
varchar2(20) not null ,
number(10,2) not null ,
varchar2(20) not null
);
8、退款销户记录表:
remove_user_info 用于记录退款销户情况
用户编号
退款金额
退款日期
操作类型
操作员
Create table
(
remove_user_info
remove_userid varchar2(20) primary key,
remove_money
remove_date
remove_type
remove_operator varchar2(10) not null
number(10,2) not null,
varchar2(20) not null,
number(1) not null,
);
3.2 有关表索引的设计与实现:
1.对学生用户表按院系/部门建立索引:index_student
Create index index_student
on
user_info(user_department);
2.对一卡通信息表的挂失字段建立索引:index_card_lost
Create index index_card_lost
on
info_card(card_losted);
3.3 有关视图的设计与实现:
1、终端交易记录视图:view_terminal_record
终端号
交易金额
消费日期
Create or replace view
view_terminal_record
(terminal_id,terminal_trademoney,terminal_date)
As
select concume_machine_id,sum(consume_money),consume_date
From
Where
Order by concume_machine_id,to_date(consume_date,'DD-Mon-YY');
consume_info
concume_machine_id = &p_terminal_id