数据库系统原理实验指导书.docx
- 文档编号:24256413
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:23
- 大小:168.86KB
数据库系统原理实验指导书.docx
《数据库系统原理实验指导书.docx》由会员分享,可在线阅读,更多相关《数据库系统原理实验指导书.docx(23页珍藏版)》请在冰豆网上搜索。
数据库系统原理实验指导书
数据库原理与应用
合性实验指导书
实验名称:
数据库设计
实验性质:
综合性实验
实验类别:
基础□专业基础√专业□
所涉及课程及知识点:
数据库原理与应用
计划学时:
12学时
北京城市学院软件与信息管理学部
一、实验目的
1.掌握数据库和数据模型的基本概念、数据模型的三要素、概念模型的表示方法、数据库系统的模式结构与体系结构、DBMS的功能与组成。
2.通过设计E-R模型并分析,掌握从实际问题出发建立概念模型的方法。
3.掌握将E-R模型转换为关系模型的方法。
4.掌握使用sqlserver创建数据库、数据表、表间关系等的方法。
5.掌握数据完整性的基础知识;学会使用约束来实施数据完整性的保护;掌握使用默认值实现数据完整性的方法;熟练使用规则实施数据完整性的保护。
6.了解视图的概念和作用;掌握视图相关的命令。
7.了解索引的作用与分类;掌握索引的创建方法。
8.掌握数据的查询、插入删除以及更新等各种sql语句的编写。
9.了解存储过程的使用方法;掌握存储过程的调用方法。
10.了解触发器的使用方法,掌握触发器的创建方法。
11.理解备份的基本概念,了解备份设备的概念。
掌握各种备份数据库的方法,了解如何制定备份计划,如何从备份中恢复设备。
12.了解数据库设计的主要步骤。
13.理解范式的作用和意义。
二、实验仪器设备和材料清单
PC机,内装windows操作系统和sqlserver数据库管理系统
三、实验内容
学生1-3人一组,从以下题目中任选1个题目,完成实验要求中的各项内容
(一)题目一:
信用卡管理系统CCMS
现准备为某银行开发一个信用卡管理系统CCMS,该系统的基本功能为:
1.信用卡申请。
非信用卡客户填写信用卡申请表,说明所要申请的信用卡类型及申请者的基本信息,提交CCMS。
如果信用卡申请被银行接受,CCMS将记录该客户的基本信息,并发送确认函给该客户,告知客户信用卡的有效期及信贷限额;否则该客户将会收到一封拒绝函。
非信用卡客户收到确认函后成为信用卡客户。
2.信用卡激活。
信用卡客户向CCMS提交激活请求,用信用卡号和密码激活该信用卡。
激活操作结束后,CCMS将激活通知发送给客户,告知客户其信用卡是否被成功激活。
3.信用卡客户信息管理。
信用卡客户的个人信息可以在CCMS中进行在线管理。
每位信用卡客户可以在线查询和修改个人信息。
4.交易信息查询。
信用卡客户使用信用卡进行的每一笔交易都会记录在CCMS中。
信用卡客户可以通过CCMS查询并核实其交易信息(包括信用卡交易记录及交易额)。
(二)题目二:
订餐系统COS
某企业为了方便员工用餐,为餐厅开发了一个订餐系统(COS:
CafeteriaOrderingSystem),企业员工可通过企业内联网使用该系统。
企业的任何员工都可以查看菜单和今日特价。
系统的顾客是注册到系统的员工,可以订餐(如果未登录,需先登录)、注册工资支付、预约规律的订餐,在特殊情况下可以覆盖预订。
餐厅员工是特殊顾客,可以进行备餐、生成付费请求和请求送餐,其中对于注册工资支付的顾客生成付费请求并发送给工资系统。
菜单管理员是餐厅特定员工,可以管理菜单。
送餐员可以打印送餐说明,记录送餐信息(如送餐时间)以及记录收费(对于没有注册工资支付的顾客,由送餐员收取现金后记录)。
顾客订餐过程如下:
1.顾客请求查看菜单;
2.系统显示菜单和今日特价;
3.顾客选菜;
4.系统显示订单和价格;
5.顾客确认订单;
6.系统显示可送餐时间;
7.顾客指定送餐时间、地点和支付方式;
8.系统确认接受订单,然后发送Email给顾客以确认订餐,同时发送相关订餐信息通知给餐厅员工。
(三)题目三:
商品配送中心信息管理系统
假设某大型商业企业由配送中心和连锁超市组成,其中商品配送中心包括采购、财务、配送等部门。
为了实现高效管理,设计了商品配送中心信息管理系统,其主要功能描述如下:
1.系统接收由连锁超市提出的供货请求,并将其记录到供货请求记录文件。
2.在接到供货请求后,从商品库存记录文件中进行商品库存信息查询。
如果库存满足供货请求,则配送处理,发送配送通知,否则,向采购部门发出缺货通知。
3.配送处理接到配送通知后,查询供货请求记录文件,更新商品库存记录文件,并向配送部门发送配送单,在配送货品的同时记录配送信息至商品配送记录文件。
4.采购部门接到缺货通知后,与供货商洽谈,进行商品采购处理,合格商品入库,并记录采购清单至采购清单记录文件,向配送处理发出配送通知,同时通知财务给供货商支付货款。
(四)题目四:
音像管理信息系统
某音像制品出租商店欲开发一个音像管理信息系统,管理音像制品的租借业务。
需求如下:
1系统中的客户信息文件保存了该商店的所有客户的用户名、密码等信息。
对于首次来租借的客户,系统会为其生成用户名和密码。
2.系统中音像制品信息文件记录了商店中所有音像制品的详细信息及其库存数量。
3.根据客户所租借的音像制品的品种,会按天收取相应的费用。
音像制品的最长租借周期为一周,每位客户每次最多只能租借6件音像制品。
4.客户租借某种音像制品的具体流程为:
(1)根据客户提供的用户名和密码,验证客户身份。
(2)若该客户是合法客户,查询音像制品信息文件,查看商店中是否还有这种音像制品。
(3)若还有该音像制品,且客户所要租借的音像制品数小于等于6个,就可以将该音像制品租借给客户。
这时,系统给出相应的租借信息,生成一条新的租借记录并将其保存在租借记录文件中。
(4)系统计算租借费用,将费用信息保存在租借记录文件中并告知客户。
(5)客户付清租借费用之后,系统接收客户付款信息,将音像制品租借给该客户。
(五)题目五:
比赛信息管理系统
某地区举行篮球比赛,需要开发一个比赛信息管理系统来记录比赛的相关信息。
需要实现以下功能:
1.登记参赛球队的信息。
记录球队的名称、代表地区、成立时间等信息。
系统记录球队每个队员的姓名、年龄、身高、体重等信息。
每个球队有一个教练负责管理球队,一个教练仅负责一个球队。
系统记录教练的姓名、年龄等信息。
2.安排球队的训练信息。
比赛组织者为球队提供了若干个场地,供球队进行适应性训练。
系统记录现有的场地信息,包括:
场地名称、场地规模、位置等信息。
系统可为每个球队安排不同的训练场地。
系统记录场地安排的信息。
3.安排比赛。
该赛事聘请专职裁判,每场比赛只安排一个裁判。
系统记录裁判的姓名、年龄、级别等信息。
系统按照一定的规则,首先分组,然后根据球队、场地和裁判情况,安排比赛(每场比赛的对阵双方分别成为甲队和乙队)。
记录参赛球队名称、比赛时间、比分、比赛场地等信息。
4.所有球员、教练和裁判可能出现重名情况。
(六)题目六:
网上图书电子商城
建立一个网上图书电子商城的数据库。
该电子商城可以实现用户购买图书,购物车,下订单等功能;同时网上书城的管理员可以对图书进行管理,包括:
新书上架、图书分类、订单管理等。
另外该网上商城还可以提供如最畅销书籍、销售前十的书籍、最新到货书籍、图书打折等信息的显示。
对于网站的会员,当其达到一定的购买量后,可以适当予以优惠。
四、实验要求
按照实验步骤的示例,从实验内容中任选一题,完成以下要求,各要求所占比例如下所示。
1.对系统的功能进行分析,并形成文档,文档中体现系统主要功能模块的具体内容。
2.完成数据库的概念设计,画出E-R图。
(10%)
3.将E-R图转换为关系模型,写出数据库中的各个关系模式。
(5%)
4.根据关系模型完成数据库的物理设计,包括表的设计、创建数据库和表。
合理设计数据库中各个表的属性,表中各属性的数据类型考虑得当。
(15%)
5.进行数据库完整性设计,包括主键、外键、check、默认值等约束
主键设置合理,表间关系、外键考虑得当,各类约束设计合理。
(10%)
6.给出数据库的关系图。
(5%)
7.根据实际功能要求创建适合的视图。
(10%)
根据数据库的功能,至少设计两个以上的视图。
8.安全性设计,针对小组各个成员的职责,说明各成员的角色及权限的分配。
(5%)
按照下表的形式进行说明:
成员姓名
登录名
角色和权限
9.所设计的数据库达到的范式级别(5%)
10.出实现主要功能的sql语句,包括数据的查询、插入、删除以及修改。
至少15条sql语句,按照需求分析阶段分析的功能写出(25%)
11根据功能要求创建触发器和存储过程。
(10%)
(至少两个触发器,两个存储过程)
12.成数据库的备份和恢复。
五、实验步骤示例
下面以电费管理系统为例说明具体的实验步骤,学生可以参考本实例进行实验。
(一)系统功能分析
1.录入功能
录入用电用户的基本信息、用电度数、自动计算电费用等;
2.用户的种类管理:
比如,用户类型:
企业或是家庭,增加和删除用户的类型,每一种类型的用户的电费的标准;
3.村庄(小区)的管理:
比如村庄的各种属性,增加和删除村庄的多少等;
4.用户的管理:
根据用户的不同类型比如企业或是家庭,实现用户的各种信息的修改;
5.用电情况的管理:
根据不同的类型统计他们的用电情况;
6.可以实现不同月份的用电情况的统计
7.查询的功能:
(1),根据用户的类型查询,根据用户的姓名查询,模糊查询,单位查询;
8.实现数据库用户的不同权限的管理功能,不同权限有有对数据的操作的限制;
9.数据库的备份。
(二)概念设计
(三)逻辑结构设计
客户信息(客户ID,客户姓名,电费ID,住址,电话,工作单位,注册时间,邮编)
单位信息(单位ID,单位名称,单位地址,邮编,单位类型,电话)
电费信息(电费ID,电费类型ID,各个月份的用电量)
电费类型信息(电费类型ID,电费价格,电费类型名称)
(四)物理设计
1.表结构设计
表的设计包括以下内容:
●表名(中英文)
●字段名
●字段数据类型
●字段是否为空
●字段的默认值
●备注,对字段的解释性说明:
主键、外键、是否自动增一、是否为索引、是否唯一、是否进行数据检查(check约束)等。
例如:
客户表
字段名
数据类型
是否允许为空
默认值
备注
用户ID
Int
否
无
主键
单位ID
Int
否
无
外键参照单位表(单位ID)
用户姓名
nvarchar(50)
否
无
电费ID
Int
否
无
外键参照电费表(电费ID)
地址
nvarchar(50)
否
无
邮编
Postcode(自定义)
是
无
电话
Tel(自定义)
否
无
注册时间
Datetime
是
无
2.数据库的创建
运行图:
3.数据表的创建
运行图
单位表:
客户表:
电费类型表:
电费表:
(五)数据完整性设计
1.主键约束、非空值约束(部分)
2.创建用户自定义数据类型
(1)邮政编码
Execsp_addtypepostcode,'char(6)',null
(2)电话号码
sp_addtypepostcode,'char(11)',null
3.填写性别的时候只能是男或者是女
altertable系统用户表addconstraintdefault_sexdefault'男'forsysuser_sex
4.check约束
altertable电费类型表addconstraintcheck_pricecheck(ele_fare_price>0andele_fare_price<5)
5.唯一约束
为电费类型表添加唯一约束即是unique约束保证电费类型的名称要唯一
altertable电费类型表addconstraintunique_ele_fare_priceuniquenonclustered(ele_fare_name)
6.创建外键约束
(1)altertable客户表addconstraintFk_cus_ele_fare_IDforeignkey(cus_ele_fare_ID)references电费表(ele_ID)
(2)altertable电费表addconstraintFk_ele_fare_IDforeignkey(ele_fare_ID)references电费类型表(ele_fare_ID)
(3)保证用户的单位要在单位表中存在
altertable客户表addconstraintFk_dep_IDforeignkey(cus_ID)references单位表(dep_ID)
(六)创建数据库关系图
(七)创建视图
1.功能说明:
为安全起见,要求用户只能查看表中的一部分数据;
代码:
createview用户信息表
asselectcus_ID,cus_name,cus_dep_IDfrom客户表,单位表
where客户表.cus_dep_ID=单位表.dep_ID
效果图
2.功能说明
为方便每一次查询电费的时候,不必要每一次都要进行表的连接,创建客户的电费视图
代码:
createview客户用电信息
Asselectcus_name,ele_fare_ID,
cus_reg_timer,ele_fareofyiyue,ele_fareoferyue,ele_fareofsanyue,ele_fareofsiyue
ele_fareofwuyue,ele_fareofliuyue,ele_fareofqiyue,ele_fareofbayue,ele_fareofjiuyue,ele_fareofshiyue,ele_fareofshiyiyue,
ele_fareofshieryue
from客户表,电费表
where客户表.cus_ele_fare_ID=电费表.cus_ele_fare_ID
(八)数据库设计分析
该数据库中的各个关系模式由于存在以下函数依赖:
(要求一一列出)
所以该数据库中的关系模式能达到3NF。
(九)数据查询和更新
1.功能说明:
查询所有客户的基本信息
代码:
select*from客户表
效果图:
2.功能说明:
修改客户张飞的地址
代码:
Update客户表
Setcus_adress=’北京市朝阳区亚运村10-10-901’
Wherecus_name=’张飞’
(十)创建触发器
1.功能说明:
创建一个触发器功能是每当一个客户的信息被插入的时候自动填充客户的注册时间!
代码:
createtriggerinsert_ele_IDon客户表
forinsert
as
declare@ele_IDint
select@ele_ID=客户表.cus_ele_fare_IDfrom客户表,insertedi
where客户表.cus_ele_fare_ID=i.cus_ele_fare_ID
begin
insert电费表(cus_ele_fare_ID)VALUES(@ele_ID)
end
效果图:
2.功能说明:
创建触发器使每一个系统用户注册的时候就自动的添加时间字段
代码:
createtriggerinser_systimeon系统用户表forinsertas
beginupdate系统用户表setsysuser_time=getdate()
end
效果图
:
3.功能说明:
功能是每当删除一个客户记录的时候就自动的删除其在电费表里面的电费ID;
代码:
createtriggerdelete_ele_IDon客户表
fordelete
as
declare@ele_IDint
select@ele_ID=客户表.cus_ele_fare_IDfrom客户表,insertedi
where客户表.cus_ele_fare_ID=i.cus_ele_fare_ID
begin
deletefrom电费表wherecus_ele_fare_ID=@ele_ID
end
(十一)存储过程的创建
1.功能说明:
创建用户信息的查询的存储过程的语句
代码:
createprocview_custable
as
select*from客户表
效果图:
2.功能说明:
创建用户修改信息的存储过程
代码:
createprocalter_custable
@alter_cus_IDint,@alter_textnvarchar(50)
as
update客户表setalter_ziduan=@alter_textwherecus_ID=@alter_cus_ID
3.功能说明:
创建用户模糊查询的存储过程
代码:
createprocselect_userinformation
@namenvarchar(50)
asselect*from客户表wherecus_namelike@name+'%'
效果图:
4.功能说明:
创建查询每一个用户i在每一个月份的用电量的存储过程代码
代码:
createproccaulate_ele_fare
@ele_IDnvarchar(4),@totle_moneyfloatoutput
as
select@totle_money=ele_fareofyiyue+ele_fareoferyue+ele_fareofsanyue+ele_fareofsiyue
+ele_fareofsanyue+ele_fareofwuyue
+ele_fareofliuyue+ele_fareofqiyue+ele_fareofbayue+ele_fareofjiuyue+ele_fareofshiyue
+ele_fareofshiyiyue+ele_fareofshieryue
from电费表
whereele_ID=@ele_ID
效果图:
5.功能说明:
创建用户添加所在单位类型的存储过程的语句
代码:
createprocadd_dep_ID
@dep_namenvarchar(50),@dep_IDint,@dep_adressnvarchar(50),@dep_teltel,@dep_postcodepostcode,@dep_typenvarchar(50)
as
insertinto单位表(dep_name,dep_ID,dep_adress,dep_tel,dep_postcode,dep_type)values(@dep_name,@dep_ID,@dep_adress,@dep_tel,@dep_postcode,@dep_type)
6.功能说明:
创建删除单位的存储过程
代码:
createprocdelete_dep
@dep_IDint
as
deletefrom单位表
wheredep_ID=@dep_ID
7.功能说明:
创建查看单位类型的存储过程
代码:
createprocview_dep
as
select*from单位表
效果图:
8.功能说明:
创建修改单位表的存储过程
代码:
createprocalter_dep
@alter_textnvarchar(50),@alter_dep_IDint
As
update单位表setalter_ziduan=@alter_textwheredep_ID=@alter_dep_ID
9.功能说明:
就是创建一个存储过程每当输入一个姓名的时候就自动的计算表中的数据,并且把结果作为返回值
代码:
createprocview_fare
@namenvarchar(50)
as
selectele_fareofyiyue+ele_fareoferyue+ele_fareofsanyue+ele_fareofsiyue+ele_fareofwuyue+ele_fareofliuyue+
ele_fareofqiyue+ele_fareofbayue+ele_fareofjiuyue+ele_fareofshiyue+ele_fareofshiyiyue+ele_fareofshieryueas'电费总额'
from电费表whereele_IDin
(selectcus_ele_fare_IDfrom客户表wherecus_name=@name)
效果图:
(十二)安全性设计
该数据库共有3名用户。
其中
成员姓名
登录名
角色和权限
成员1
Sa
DBA
成员2
U1
Datareader\datareader
…
…
…
(十三)数据库备份和恢复
备份方案:
完全+事务日志
创建备份磁盘
语句:
execsp_addumpdevice'disk','小型电费管理系统备份磁盘','c:
\电费管理系统.bak'
结果:
开始进行完全备份
语句:
backupdatabase小型电费管理系统to小型电费管理系统备份磁盘
结果:
开始事务日志备份
语句:
小型电费管理系统备份磁盘
结果:
六、考核形式
(1)过程考核(40%)
100-90:
严格遵守上机规则,独立完成作业;程序模块完整,功能齐全,界面新颖独特;上机报告认真、规范;关键代码不少于500行。
89-80:
遵守上机规则,独立完成作业;程序模块完整,功能齐全;上机报告认真、规范;关键代码不少于300行。
79-70:
遵守上机规则,独立完成作业;程序模块完整,运行结果正确;上机报告认真、规范;关键代码不少于200行。
69-60:
遵守上机规则,独立完成作业;程序结果正确;上机报告认真规范。
60分以下:
上机不认真;程序未调试完成或结果不正确;上机报告不认真。
(2)答辩(30%)
100-90:
回答问题熟练;思路清晰,简单明了
89-80 :
回答问题熟练;
79-70:
问题回答正确;
69-60:
回答问题基本正确
60分以下:
回答问题不正确
(3)报告(30%)
100-90:
内容全面;图表规范;结构清晰;叙述准确;独立完成实验报告;具有个人见解
89-80 :
内容全面;图表规范;结构清晰;叙述准确;独立完成实验报告;
79-70:
内容全面;图表规范;结构清晰;叙述准确;
69-60 :
内容全面;图表不规范;结构清晰;
60分以下:
内容不全;图表不规范;结构混乱;叙述不准确
实验结束后以小组为单位提交数据库文件、sql语句的脚本文件和实验报告。
如无答辩时间,则按照过程+提交作品占60%,实验报告占40%的标准计算成绩。
七、实验报告要求
实验名称:
数据库设计
课程名称:
数据库原理与应用
实验日期:
2010年月日实验报告提交日期:
2010年月日
学号:
实验人
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 系统 原理 实验 指导书