资源描述
课程设计成果说明书
题 目:酒店数据管理系统的数据库设计
东海科学技术学院课程设计成绩评定表
20 10 —20 11 学年 第 二 学期
院系 数理与信息系 专业 计算机科学与技术 班级 C09计算机(1)班
学生姓名(学 号)
张某某
(071005301)
课程名称
数据库课程设计
题 目
酒店数据管理系统的数据库设计
指导教师评语
指导教师签名:
年 月 日
答辩评语及成绩
答辩小组教师签名:
年 月 日
东海科学技术学院课程设计任务书
20 10 —20 11 学年 第 二 学期
院系 数理与信息系 专业 计算机科学与技术 班级 C09计算机(1)班
学生姓名(学 号)
张某某
(071005301)
课程名称
数据库课程设计
题 目
酒店数据管理系统的数据库设计
完成期限
自 2011 年 6 月 10 日至 2009 年 7 月 3 日 共 2 周
设
计
依
据
1、对酒店管理数据、操作流程等的调查分析;
2、关系型数据库的设计方法,主要是ER 图的绘制和从ER图转换成关系模式;
3、关系模式优化,要求规范化程度达到第三范式(3NF);
4、SQL Server 2000中有关数据库的基本操作,要求掌握相应的T-SQL语句。
设
计
要
求
及
主
要
内
容
设计要求
结合所学的数据库理论知识,独立设计方案;学会查阅相关资料,通过查阅进一步熟悉常用方法的用途和技巧,并掌握这些方法的具体含义和如何使用这些方法解决实际问题;掌握综合性数据库设计的基本过程,完成高校教学管理系统的数据库设计,并且设计合理的数据完整性;认真撰写总结报告,培养严谨的作风和科学的态度。
主要内容
首先,分析选题的现实意义和可行性;其二,进行相应的需求分析(重点是数据需求分析);其三,根据需求分析画出ER图,并转换成关系模式;其四,设计数据库的物理结构;最后,在SQL Server 2000中实现该数据库,并适当输入一些模拟数据。
参
考
资
料
[1]萨师煊等.数据库系统概论(第四版).高等教育出版社.2006
[2]杨桦等.SQL Server 2000实用教程.清华大学出版社.2007
[3]朱扬勇等.客户/服务器数据库应用开发.复旦大学出版社.1997
[4]陆慧娟等.数据库原理与应用.科学出版社.2006
[5]李春葆等.SQL Server 2000应用系统开发教程.清华大学出版社.2005
指导教师签字
年 月 日
摘要
数据库技术是计算机科学技术发展最快,应用最为广泛的技术之一。其在计算机设计,人工智能,电子商务,企业管理,科学计算等诸多领域均得到了广泛的应用,已经成为计算机信息系统和应用的核心技术和重要基础。
……
……
……
【关键词】SQL语言,数据库设计,酒店数据管理
目 录
摘要 1
1 选题 3
1.1 课题简介 3
1.2 设计目的 3
1.3 设计内容 3
2 需求分析 3
2.1 需求分析的任务 3
2.2 需求分析的过程 4
3 概念设计(ER图) 4
3.1 概念结构设计的方法和步骤 4
3.2 视图的集成 4
4 ER图转换成关系模式 5
4.1 E-R图向关系模型的转换 5
4.2 数据模型的优化 5
5 物理结构设计 6
6 T-SQL语句 8
7 其他 12
8 总结 15
参考文献 16
学生课程设计日志 17
1 选题
1.1 课题简介
随着数据处理的不断进步和计算机网络的迅速发展,使数据库应用系统不仅在功能而且在结构上都有了深刻的变化,……
1.2 设计目的
……
1.3 设计内容
运用基于E-R模型的数据库设计方法和关系规范化理论做指导完成从系统的分析到设计直至系统的最终实现,开发……
2 需求分析
2.1 需求分析的任务
需求分析的任务是调查应用领域,对应用领域中的信息要求和操作要求进行详细分析,形成需求分析说明书。重点是调……
2.2 需求分析的过程
(1)……
(2)……
(3)……
……
3 概念设计(ER图)
3.1 概念结构设计的方法和步骤
设计概念结构通常有四种方法:自顶向下,……
3.2 视图的集成
描述进行视图集成的具体过程,得到如下总体概念结构E-R图。
联系电话
地址
老板姓名
供应商号
帐号
供应商
部门名称
m
供应量
供应
商品号
部门电话
部门编号
仓库号
消费人数
面积
库存量
数量
服务
管理
商品
仓库
库存
部门
n
n m n
价格
厂家
1
仓库电话
管理量
1 m
商品名
领导
属于
购买数量
m
购买
1 n
工号
职工
n
消费日期
职工姓名
m
消费金额
职称
年龄
消费者
n
4 ER图转换成关系模式
4.1 E-R图向关系模型的转换
实体:这里他没有标出主键和外键,应该用下划直线标出主键,下划波浪线标出外键。
部门(部门编号, 部门名称, 部门电话)
职工(工号, 职工姓名, 年龄, 职称, 部门编号)
仓库(仓库号, 仓库电话, 面积)
供应商(供应商号, 联系电话, 老板姓名, 地址, 帐号)
商品(商品号,商品名,价格,厂家,数量)
消费者(消费日期, 消费金额, 消费人数)
联系:
供应(供应商号, 商品号, 供应量)
库存(仓库号, 商品号, 库存量)
管理(商品号, 工号, 购买量)
服务(工号, 消费者,服务质量)
购买(商品号, 消费者, 购买数量)
包含依赖关系如下:
供应[供应商号]供应商[供应商号]
供应[商品号]商品[商品号]
库存[仓库号]仓库[仓库号]
库存[商品号]商品[商品号]
管理[商品号]商品[商品号]
管理[工号]职工[工号]
服务[工号]职工[工号]
购买[商品号]消费者[商品号]
职工[部门编号]部门[部门编号]
部门[部门编号]职工[工号]
4.2 数据模型的优化
数据库的逻辑结构设计的结果不是唯一的。为了提高数据库应用系统的性能,还应该根据应用需要适当的修改,……
5 物理结构设计
各表格的定义
部门表
列名
数据类型
长度
能否取空值
备注
部门编号
varchar
10
NO
主码
部门名称
varchar
50
NO
部门电话
int
经理工号
int
职工表
列名
数据类型
长度
能否取空值
备注
工号
int
NO
主码
职工姓名
varchar
20
NO
年龄
int
职称
varchar
10
部门编号
varchar
10
仓库表
列名
数据类型
长度
能否取空值
备注
仓库号
int
NO
主码
仓库电话
int
面积
int
供应商表
列名
数据类型
长度
能否取空值
备注
供应商号
varchar
10
NO
主码
联系电话
int
老板姓名
varchar
10
NO
地址
varchar
50
NO
帐号
varchar
50
原材料表
列名
数据类型
长度
能否取空值
备注
材料名称
varchar
30
NO
主码
价格
money
数量
int
产地
varchar
50
成品菜表
列名
数据类型
长度
能否取空值
备注
菜名
varchar
20
NO
主码
菜价
money
NO
份数
int
消费者表
列名
数据类型
长度
能否取空值
备注
餐桌号
int
NO
主码
消费金额
money
消费人数
int
消费日期
datetime
供应表
列名
数据类型
长度
能否取空值
备注
供应量
int
供应商号
varchar
10
NO
主码
材料名称
varchar
30
NO
主码
库存表
列名
数据类型
长度
能否取空值
备注
库存量
int
仓库号
int
NO
主码
材料名称
varchar
30
NO
主码
购买表
列名
数据类型
长度
能否取空值
备注
购买量
int
工号
int
NO
主码
材料名称
varchar
30
NO
主码
烹饪表
列名
数据类型
长度
能否取空值
备注
材料用量
int
菜名
varchar
20
NO
主码
材料名称
varchar
30
NO
主码
服务表
列名
数据类型
长度
能否取空值
备注
服务质量
varchar
10
工号
int
NO
主码
餐桌号
int
NO
主码
享用表
列名
数据类型
长度
能否取空值
备注
用餐数量
int
菜名
varchar
20
NO
主码
餐桌号
int
NO
主码
6 T-SQL语句
建库
create database 酒店数据管理系统
on
(name=酒店数据,
filename='e:\mydata\酒店数据.mdf',
size=10,
maxsize=20,
filegrowth=1)
log on
(name=酒店数据日志,
filename='e:\mydata\酒店数据日志.ldf',
size=10,
maxsize=20,
filegrowth=10%)
go
建表
1.部门表
use 酒店数据管理系统
go
create table 部门
(部门编号 varchar(10) primary key,
部门名称 varchar(50) not null,
部门电话 int,
经理工号 int)
go
2.职员信息表表
create table 职员
(账号 int primary key,
职职员姓名 varchar(20) not null,
性别 int,
密码 varchar(10),
备注 varchar(10))
go
3.客房基本信息表
create table 客房
(客房编号 int primary key,
客房类型 int,
钟点价格 money,
全日价格 money)
go
3.入住顾客历史信息表
create table 客房
(顾客编号 int primary key,
姓名 int,
性别 int
证件类型 int
证件号码 int
付款金额 money
入住时间 datetime not null
退房时间 datetime not null)
go
4.供应商表
create table 供应商
(供应商号 varchar(10) primary key,
联系电话 int,
老板姓名 varchar(10) not null,
地址 varchar(50) not null,
帐号 varchar)
go
5.原材料表
create table 原材料
(材料名称 varchar(30) primary key,
价格 money,
数量 int,
产地 varchar(50))
go
6.成品菜表
create table 成品菜
(菜名 varchar(20) primary key,
菜价 money not null,
份数 int)
go
7.客房实时信息表
create table 客房
(客房编号 int primary key,
客房类型 int,
客房说明 int,
全日价格 money,
钟点价格 money,
是否被入住或预订 int,
入住时间 datetime not null)
go
7.客房入住历史信息表
create table 客房
(客房编号 int primary key,
客房类型 int,
客房说明 int,
全日价格 money,
钟点价格 money,
入住或预订类型 int,
入住时间 datetime not null
退房时间 datetime not null)
go
8.供应表
create table 供应
(供应量 int,
供应商号 varchar(10) not null,
材料名称 varchar(30) not null,
constraint 供应_pk primary key(供应商号,材料名称))
go
9.库存表
create table 库存
(库存量 int,
仓库号 int not null,
材料名称 varchar(30) not null,
constraint 库存_pk primary key(仓库号,材料名称))
go
10.购买表
create table 购买
(购买量 int,
工号 int not null,
材料名称 varchar(30) not null,
constraint 购买_pk primary key(工号,材料名称))
go
11.烹饪表
create table 烹饪
(材料用量 int,
菜名 varchar(20) not null,
材料名称 varchar(30) not null,
constraint 烹饪_pk primary key(菜名,材料名称))
go
12.服务表
create table 服务
(服务质量 char(10),
工号 int not null,
餐桌号 int not null,
constraint 服务_pk primary key(工号,餐桌号))
go
13.享用表
create table 享用
(用餐数量 int,
菜名 char(20) not null,
餐桌号 int not null,
constraint 享用_pk primary key(菜名,餐桌号))
go
7 其他
在表中创建相关的视图,约束,默认值,索引,触发器,规则以及存储过程
创建视图
视图1
create view 职工服务
as
select 职工.工号,职工姓名,部门编号,服务.服务质量
from 职工,服务
where 职工.工号=服务.工号
go
视图2
create view 消费者享用
as
select 消费者.餐桌号,消费金额,享用.用餐数量
from 消费者,享用
where 消费者.餐桌号=享用.餐桌号
go
视图3
create view 职工购买
as
select 职工.工号,部门编号,购买.材料名称,购买量
from 职工,购买
where 职工.工号=购买.工号
go
创建约束
Check约束1
alter table 职工
with nocheck
add check(年龄>=18 and 年龄<=65)
go
Check约束2
alter table 仓库
add check(面积>=50)
go
Check约束3
alter table 服务
with nocheck
add constraint CK_服务质量 check(服务质量='满意' or 服务质量='较满意'or 服务质量='一般')
go
外键约束
alter table 职工
add foreign key (部门编号) references 部门(部门编号)
go
创建默认值
create default def_份数 as 1
go
exec sp_bindefault 'def_份数','成品菜.份数'
go
创建索引
索引1
create nonclustered index
ix_成品菜 on 成品菜(菜名,菜价,份数)
go
索引2
create nonclustered index
ix_职工 on 职工(工号,职工姓名,年龄,职称,部门编号)
go
创建触发器
插入职工的触发器
create trigger insert_服务 on 服务
for insert
as
declare @msg varchar(20)
select @msg=工号 from inserted
if exists(select * from 职工 where 工号=@msg)
print'该职工记录成功插入!'
else
begin
print'该职工的工号在表职工中不存在,不能插入该职工记录!'
rollback transaction
end
return
go
点菜的触发器
create trigger insert_享用 on 享用
for insert
as
declare @msg varchar(20)
select @msg=菜名 from inserted
if exists(select * from 成品菜 where 菜名=@msg)
print'这道菜存在!'
else
begin
print'这道菜在表成品菜中不存在,不能点这道菜!'
rollback transaction
end
return
go
创建规则
规则1
create rule 消费金额_rule
as
@消费金额>=20
Go
规则2
create rule 服务质量_rule
as
@服务质量 in ('满意','较满意','一般')
go
创建存储过程
create procedure 顾客享用_info
as
select 成品菜.菜名,用餐数量,享用.餐桌号
from 享用
join 成品菜
on 享用.菜名=成品菜.菜名
join 消费者
on 消费者.餐桌号=享用.餐桌号
go
8 总结
经过两个星期的努力,终于设计出一个……
参考文献
[1]萨师煊等.数据库系统概论(第四版).高等教育出版社.2006
[2]杨桦等.SQL Server 2000实用教程.清华大学出版社.2007
[3]朱扬勇等.客户/服务器数据库应用开发.复旦大学出版社.1997
[4]陆慧娟等.数据库原理与应用.科学出版社.2006
[5]李春葆等.SQL Server 2000应用系统开发教程.清华大学出版社.2005
东海科学技术学院学生课程设计日志
周次
日期
工 作 内 容
第
十
八
周
6.20
布置任务及分组、总体需求分析与设计
6.21
编写相关文档、设计说明、查找资料
6.22
需求分析,写出DFD和DD
6.23
画出E-R图
6.24
完善E-R图
周次
日期
工 作 内 容
第
十
九
周
6.27
转化成关系模型
6.28
在SQL SERVER上实施
6.29
撰写课程设计成果说明书
6.30
打印
7.1
课程设计检查与整理
展开阅读全文