2021年数据库系统原理实践任务书
1 软件功能学习部分
完成下列1~2题,并在实践报告中叙述过程,可适当辅以插图(控制在A4三页篇幅以内)
1)练习SQL Server或其他某个主流关系数据库管理系统软件的备份方式:数据和日志文件的脱机备份、系统的备份功能。
2)练习在新增的数据库上增加用户并配置权限的操作,通过用创建的用户登录数据库并且执行未经授权的SQL语句验证自己的权限配置是否成功。
2 SQL练习部分
假设在某个区域内的所有地点都存储在地点表中。该地区中的所有人员信息存储在人员表中。根据收集到的人员行程建立了疫情期间某个地区的人员行程表。
该地区的部分人员进行了核酸检测,检测结果保存在诊断表中。根据诊断表中的检测结果,对新冠确诊和无症状感染者的密切接触者进行隔离,密切接触者的信息存储到密切接触表中,隔离信息存储到隔离表中。隔离地点共设置了4个,并且每个隔离地点都有容量限制,隔离点的信息存储在隔离地点表中。
2.1 建表
1) 根据以上背景,请在DBMS中创建这些关系,包括主码和外码的说明,并写出指定关系的建表SQL语句
人员表【人员编号,姓名,电话】
person (id int, fullname char(20), telephone char(11))
主码为人员编号
地点表【地点编号,地点名称】
location (id int, location_name char(20))
主码为地点编号
行程表【行程编号,人员编号,所在地点编号,开始时间,结束时间】
itinerary (id int, p_id int, loc_id int, s_time datetime, e_time datetime)
主码为行程编号,
诊断表【诊断编号,人员编号,诊断日期,诊断结果】
diagnose_record (id int, p_id int, diagnose_date datetime, result int)
主码为诊断编号,诊断结果包括:1:新冠确诊,2:无症状感染者,3:正常
密切接触者表【密切接触编号,被接触者编号,接触日期,接触地点,病例人员编号】
close_contact (id int, p_id int, contact_date datetime, loc_id int, case_p_id int)
主码为密切接触编号
隔离表【隔离编号,被隔离人员编号,开始隔离日期,结束隔离日期,隔离地点编号,隔离状态】
isolation_record (id int, p_id int, s_date datetime, e_date datetime, isol_loc_id int, state int)
主码为隔离编号,隔离状态:1:正在隔离 2:隔离结束 3:转入医院
隔离地点表【隔离地点编号,隔离地点名,房间容量】
isolation_location (id int, location_name char(20), capacity int)
主码为隔离房间编号
2) 观察性实验
验证在设置外码时是否一定要参考被参照关系的主码,并在实验报告中简述过程和结果。
3) 数据准备
依据后续实验的要求,向上述表格中录入适当数量的实验数据,从而对相关的实验任务能够起到验证的作用。
2.2 数据更新
1) 分别用一条sql语句完成对人员表基本的增、删、改的操作;
2) 批处理操作
将行程表中所有到达地点2的记录插入到新表location_record_2中。
3) 数据导入导出
通过查阅DBMS资料学习数据导入导出功能,并将任务2.1所建表格的数据导出到操作系统文件,然后再将这些文件的数据导入到相应空表。
4) 观察性实验
建立一个关系,但是不设置主码,然后向该关系中插入重复元组,然后观察在图形化交互界面中对已有数据进行删除和修改时所发生的现象。
5) 触发器实验
编写一个触发器,用于实现以下完整性控制规则:
当隔离表中的某位隔离人员在诊断表中的诊断结果为“1:新冠确诊”,将隔离状态从“1”改成“3”。
2.3 查询
请分别用一条SQL语句完成下列各个小题的需求:
1) 查询截至目前的人流量大于30的地点,并按照从高到低排序
2) 查询出每个隔离地中正在进行隔离的人数,并按数量由多到少排序
3) 查询行程表中连续行程中的一对行程地点(例如,方斯雪,在2021-02-02 03:02:12至2021-02-02 03:51:12 在博物馆中,2021-02-02 03:51:12 至 2021-02-02 04:23:12出现超市中,输出【姓名,重合时间,起始地点id,起始地点,结束地点id,结束地点】,查询结果如下图所示)
4) 查询贾涵山的行程情况
5) 查询地名中带有‘店’字的地点名称
6) 新发现一位确诊者,已知他在2021.2.2日20:05:40到21:25:40之间在“活动中心”,查询他接触到的人员的名字
7) 查询正在使用的隔离区名(使用DISTINCT关键字)
8) 查询有出行记录的人员(使用EXISTS关键字)
9) 查询没有达到地点“Today便利店”的人数(使用NOT EXISTS 关键字)
10) 查询去过所有地点的人员
11) 新建一个视图,里面有每个隔离点的id,名称,已用房间,容量
12) 从视图中查询还有空房间的隔离点的剩余房间数目
13) 查询靳宛儿传染的人有哪些
14) 查询每个地点的密切接触者的数量
15) 查询感染人数最多的用户的名字和感染人数
16) 查询2021-02-02 10:00:00到14:00:00,行程记录最频繁的五个人及行程记录数目
2.4 了解系统的查询性能分析功能(选做)
选择上述2.3任务中某些较为复杂的SQL语句,查看其执行之前系统给出的分析计划和实际的执行计划,记录观察的结果,并对其进行简单的分析。
2.5 DBMS函数及存储过程(选做)
1) 编写一个依据人员编号计算其达到所有地点的次数的自定义函数,并利用其查询至少到达过3个地点的人员。
2) 尝试编写DBMS的存储过程,建立每个隔离点的人数统计表,并通过存储过程更新该表。
3 数据库应用系统设计
自行选择所擅长的DBMS软件以及数据库应用系统(客户端程序或者网站)的程序开发工具,参考后面的题目例子,拟定一个自己感兴趣的数据库应用系统题目,完成该小型数据库应用系统的设计与实现工作。主要内容包括:需求调研与分析、总体设计、数据库设计、详细设计与实现、测试等环节的工作。
下列题目作为选题背景参考,也可依据这些题目拟定一个自己感兴趣的具有类似工作量和复杂程度的课题。并在DBMS的交互式界面中验证事务机制的执行效果。
题目1:电信收费管理系统
采用B/S或C/S模式实现一个电信收费管理系统软件。实现电信套餐种类、用户信息、客服代表、收款员等信息的管理。
要求:
1) 实现不同权限的浏览和更新。
2) 实现用户扣、缴费情况及帐户余额的查询。
3) 实现欠款用户使用状态的自动改变。
4) 实现客服代表的业绩统计功能。
5) 提供至少两种风格的查询报表。
6) 系统需包含事务(包含commit,rollback),存储过程/触发器,视图,函数。
7) 需要在程序中体现SQL和编程语言的结合。
题目2:员工培训管理系统
采用B/S或C/S模式实现一个员工培训管理系统软件。完成培训计划制定、培训导师安排、学员分批次注册、学员培训期间的考勤、考核与工资等信息的管理。
要求:
1) 培训计划应包括一系列具有先后依赖关系的课程,且培训计划可更新。
2) 实现不同权限的浏览和更新。
3) 实现考勤、考核、计算工资的功能。
4) 能够综合评价培训导师和学员的业绩。
5) 实现员工培训不合格后的再次培训管理。
6) 系统需包含事务(包含commit,rollback),存储过程/触发器,视图,函数。
7) 需要在程序中体现SQL和编程语言的结合。
题目3:汽车租借信息系统
采用B/S或C/S模式实现一个汽车租借信息系统。完成用户、车辆、经手员工、租借情况、车辆损毁情况、交通违规罚款等信息的管理。
要求:
1) 实现不同权限的浏览和更新。
2) 能够根据车辆使用情况计算押金退还金额。
3) 能查询客户的租借历史记录,并进行信誉度评价,进行会员制和非会员制的客户管理。
4) 能够管理车辆报修信息;
5) 能够生成租借公司的日、月、季度、年财务报表。
6) 系统需包含事务(包含commit,rollback),存储过程/触发器,视图,函数。
7) 需要在程序中体现SQL和编程语言的结合。
题目4:医院管理系统
采用B/S或C/S模式实现一个医院管理系统。完成药品、诊疗、医师、病人、病房等信息的管理。
要求:
1) 提供面向公众的导医和收费标准明细查询的功能。
2) 挂号、收费、诊疗人员等具有不同的查询和修改权限。
3) 按照看病的基本流程(例如:预约——挂号——门诊——检查——复诊——住院治疗——出院结算)进行信息管理。
4) 提供病人收费汇总清单,提供各种药品或检查项目的使用情况汇总;
5) 提供医院各部门财务报表及医院整体财务报表,并且分日明细表和月、年汇总表。
6) 系统需包含事务(包含commit,rollback),存储过程/触发器,视图,函数。
7) 需要在程序中体现SQL和编程语言的结合。
题目5:田径运动会管理系统
采用B/S或C/S模式实现一个田径运动会管理系统。完成参赛单位(国际比赛的单位为国家,国内比赛的单位为省份)、运动员、裁判、比赛项目、比赛成绩的信息管理。
要求:
1) 提供不同权限的录入、查询界面;
2) 比赛采用分组晋级制度,例如A组、B组、1/8、1/4、半决赛、决赛。能够维护、查询赛事日程表;
3) 能够查询每项比赛的世界记录、本赛事历史记录;
4) 能够查询每次小组赛或者半决赛、决赛的运动员个人信息及上一轮成绩;
5) 能够统计全能赛项的个人成绩和名次;
6) 能够统计各参赛单位的整体情况。
7) 系统需包含事务(包含commit,rollback),存储过程/触发器,视图,函数。
8) 需要在程序中体现SQL和编程语言的结合。
题目6:机票预定系统
1、系统功能的基本要求:
1) 每个航班信息的输入。
2) 每个航班的坐位信息的输入;
3) 当旅客进行机票预定时,输入旅客基本信息,系统为旅客安排航班,打印取票通知和帐单;
4) 旅客在飞机起飞前一天凭取票通知交款取票;
5) 旅客能够退订机票;
6) 能够查询每个航班的预定情况、计算航班的满座率。
7) 包含事务(包含commit,rollback),存储过程/触发器,视图,函数。
8) 在程序中需要体现SQL和编程语言的结合。
2、数据库要求:在数据库中至少应该包含下列数据表:
1) 航班信息表;
2) 航班坐位情况表;
3) 旅客订票信息表;
4) 取票通知表;
5) 帐单。
设计一个B/S或C/S模式的系统实现上述功能。
题目7:工资管理系统
1、系统功能的基本要求:
1) 员工每个工种基本工资的设定
2) 加班津贴管理,根据加班时间和类型给予不同的加班津贴;
3) 按照不同工种的基本工资情况、员工的考勤情况产生员工的每月的月工资;
4) 员工年终奖金的生成,员工的年终奖金计算公式=(员工本年度的工资总和+津贴的总和)/12;
5) 企业工资报表。能够查询单个员工的工资情况、每个部门的工资情况、按月的工资统计,并能够打印;
6) 包含事务(包含commit,rollback),存储过程/触发器,视图,函数;
7) 在程序中需要体现SQL和编程语言的结合。
2、数据库要求:在数据库中至少应该包含下列数据表:
1) 员工考勤情况表;
2) 员工工种情况表,反映员工的工种、等级,基本工资等信息;
3) 员工津贴信息表,反映员工的加班时间,加班类别、加班天数、津贴情况等;
4) 员工基本信息表
5) 员工月工资表。
设计一个B/S或C/S模式的系统实现上述功能。
题目8:网上销售系统
网上销售系统要求提供包括商品信息管理、查询、订购、销售等功能的网上交易平台,对客户和商店管理员应提供不同的操作界面和使用权限。
具体功能包括:
1) 商品信息管理:商店可以对商品信息进行管理,包括商品的类别、名称、描述信息、售价、图片、折扣等。
2) 客户信息管理:客户可以自助注册并管理自己的个人信息。
3) 商品查询:客户可以通过多种方式查询并且挑选网上商店出售的商品,通过在网上填写并确认订单的方式来购买商品。
4) 订单查询:客户可以管理自己的订单信息,查询订单的处理情况。
5) 订单处理:商店可以对客户的订单信息、汇款单信息进行审核,以确定是否发货,并修改订单状态。
6) 系统需包含事务(包含commit,rollback),存储过程/触发器,视图,函数。
7) 需要在程序中体现SQL和编程语言的结合。
设计一个B/S模式的系统实现上述功能。
题目9:仓储管理系统
实现一个仓库库存货品信息管理系统软件。仓库的日常工作包括货品的入库和出库。入库要由采购人员提供进货单,进货单经过审核人员审核验收后方能进行货品入库。出库要由销售人员提供出货单,经过审核人员审核批准后才能提货。当销售人员需要提货而货品的库存量不足时可先进行缺货登记,当有相应货品入库时,按缺货登记时间顺序处理出货请求。
要求:
1) 能实现库存货品信息的管理,货品的相关信息包括:货品号、货品名、存放地、货品库存量、生产厂家等。
2) 实现进货单的填写、修改、审核和查询等功能。
3) 实现出货单的填写、修改、审核和查询等功能。
4) 实现缺货登记、查询和处理。
5) 根据不同用户身份提供不同的操作权限和界面。
6) 系统需包含事务(包含commit,rollback),存储过程/触发器,视图,函数。
7) 需要在程序中体现SQL和编程语言的结合。
设计一个B/S或C/S模式的系统实现上述功能。
题目10:超市收银系统
假设一家小型超市的收银台(前台)要完成下列日常工作:
1) 收银:收银员输入顾客的会员卡卡号(若有卡)、所购商品的货号等信息,系统根据这些信息获取相应的价格信息并计算应收取的总金额。完成收银后,记录交易信息,修改有关种类商品的剩余量以及该持卡顾客的消费情况。
2) 发卡:顾客可交纳一定的费用(如50元)办理一张会员卡,以后在该商场购物可凭卡享受9折优惠。如果一个未持卡顾客一次购物满1000元,可为其免费发放一张会员卡,每张卡的优惠期为一年,一年内消费达到一定金额的可继续享受下一年的优惠。
3) 款项盘存:收银员下班或交接班前对本收银台中本班次收取的款额进行盘存,明确责任。
4) 此外,还应提供下列后台功能:
5) 商品信息的录入、修改、删除和查询等。
6) 收银员身份及口令管理。
7) 系统需包含事务(包含commit,rollback),存储过程/触发器,视图,函数。
8) 需要在程序中体现SQL和编程语言的结合。
设计一个C/S模式的系统实现上述功能。
4 撰写课程实践报告
在课设规定的时间内,撰写并完成课程实践报告。
实践报告由5章组成,依次对应下列内容:
1 课程任务概述
简要陈述介绍本实践课程的各项任务要求。
2 软件功能学习
阐述第1部分任务的完成过程。
3 SQL练习
阐述第2部分的完成过程。
4 应用系统设计
阐述第3部分的完成过程。
5 课程总结
逐条概括、总结此次课程实践的主要工作,阐述此次课程实践的心得体会,展望此次课程实践的有待改进和完善的工作。
其中,第4章进一步分7个小节节,依次是:
4.1系统设计目标
4.2 需求分析
4.3 总体设计
4.4 数据库设计
4.5 详细设计与实现
4.6 系统测试
4.7 系统设计与实现总结
5 提交书面报告和电子资料
以班为单位刻盘提交,每人一个压缩文件,文件名格式“班号_姓名_应用程序名.rar”,压缩文件内含1个文件(课程实践报告word版)和3个目录:1)第2部分源代码;2)第3部分应用程序源代码;3)第3部分应用程序可执行文件、数据库文件、以及程序使用说明word文档。
6 关于附录
实践报告要统一有附录,里面包含去除冗余之后第2部分、第3部分核心功能的源代码。