资源描述
X X 学 院
课程设计说明书
题目 销售订单数据库管理系统
系(部) 计算机科学与技术系
专业(班级) 软件工程
姓名
学号
指导教师
起止日期
课程设计任务书
课程名称:数据库系统课程设计
设计题目:机票预定管理系统、职工考勤管理系统、工厂数据库管理系统、超市会员管理系统、销售订单数据库管理系统(任选一题)。
已知技术参数和设计要求:
题目一:机票预定管理系统
1、某航空公司机票预订管理系统需要如下信息:
航班:航班编号、出发地、目的地、出发时间、飞行时间、飞机型号等。
飞机:飞机型号、座位数。
机票:航班编号、客户编号、价格、折扣、当前预售状态等。
客户:姓名、联系电话、身份证号码等。
业务员:姓名、工号。
2、系统功能的基本要求:
按照一定条件查询、统计符合条件的航班、机票、客户信息等。例如航班剩余舱位数目、同一航线可选航班信息、客户购买历史等,能够模拟完成机票预订业务。
题目二:职工考勤管理系统
1、某职工管理管理系统中需要如下信息:
职工信息,包括职工编号、职工姓名、性别、年龄、职称等;
出勤记录信息,包括上班打卡时间,下班打开时间,缺勤记录等;
出差信息,包括出差起始时间、结束时间、统计总共天数等;
请假信息,包括请假开始时间,结束时间,统计请假天数等;
加班信息,包括加班开始时间、结束时间、统计加班总时间。
2、系统功能的基本要求:
按照一定条件查询、统计职工基本信息,某段时间出勤、出差、请假及加班信息。查询加班最多或请假做多的职工,能模拟完成职工考勤过程。
题目三:工厂数据库管理系统
1、某工厂需建立一个管理数据库存储以下信息:
工厂包括厂名和厂长名。
一个厂内有多个车间,每个车间有车间号、车间主任姓名、地址和电话。
一个车间有多个工人,每个工人有职工号、姓名、年龄、性别和工种。
一个车间生产多种产品,产品有产品号、产品名称和价格。
一个车间生产多种零件,一个零件也可能为多个车间制造。零件有零件号、重量和价格。
一个产品由多种零件组成,一种零件也可装配出多种产品。
产品与零件均存入仓库中。
厂内有多个仓库,仓库有仓库号、仓库主任姓名和电话。
2、系统功能的基本要求:
按照一定条件查询、统计工人和产品等基本信息,能模拟工厂生产过程中对原材料(零件)、产品检测、库存环节的管理。
题目四:超市会员管理系统
1、某超市会员管理系统中需要如下信息:
会员:姓名、性别、年龄、联系方式、初次成为会员的时间等
会员购物信息:购买商品编号、商品名称、商品所属种类,数量,价格、购物时间等
会员返利信息:包括会员积分的情况,享受优惠的等级等
2、系统功能的基本要求:
按照一定条件查询、统计会员购买信息,例如会员某段时间的消费金额、积分情况、享受优惠的情况,按不同类别查询不同年龄段会员消费偏好,并设置参数定义畅销商品,并可以查询某段时间畅销商品的销售情况,能够模拟完成会员购物过程。
题目五:销售订单数据库管理系统
1、某销售商的订单系统需要如下信息:
每个供应商包含供应商编号、名称、地址、联系电话等信息。
每种产品包含产品号、产品名称、产品类别等信息。
每个供应商可供应多种产品,每种产品可由多个供应商供应。
客户包含编号、姓名、通信地址、电话等信息。
雇员包括编号、姓名、联系电话等信息。
订单包括订单号等信息。
一个客户可下多个订单,每个订单只能由一个客户下。
一个雇员可管理多个订单,每个订单只能由一个雇员管理。
一个订单订购多种产品,每种产品可在不同的订单中订购
2、系统功能基本要求:
按照一定条件查询、统计订单信息,例如订单量最多的客户或者产品。能够模拟完成一个订单交易全过程。
各阶段具体要求:
1、需求分析阶段
l 定义数据项的含义和取值
l 定义目标系统的数据流
2、概念结构设计阶段
l 画出实体模型E-R图
3、逻辑结构设计阶段
l 将实体模型转化为关系模型
l 给出每个关系的主关键字和函数依赖集
l 分析你所设计的关系数据库模式是否属于3NF
4、物理设计阶段
l 确定所有字段的名称、类型、宽度、小数位数及完整性约束
l 确定数据库及表的名称及其组成
l 确定索引文件和索引关键字
5、数据库安全及维护设计阶段
l 设计一个适合的数据库安全策略(用户身份认证、访问权限、视图)
l 为了实现复杂的数据完整性约束,设计适当的触发器
l 设计一个适合的数据库备份策略
6、实施阶段
l 要求所有操作必须在查询分析器中用SQL语句或系统存储过程完成。
设计工作量:
(1)软件设计:完成问题陈述中所提到的所有需求功能。
(2)论文:要求撰写不少于3000个文字的文档,详细说明各阶段具体要求。
工作计划:
安排两周时间进行课程设计,软件开发步骤如下,第一周完成1~4,第二周完成5~8,论文同步进行;
1) 选定题目
2) 需求分析
3) 概念结构设计
4) 逻辑结构设计
5) 物理设计
6) 数据库安全及维护设计
7) 数据库上机实现
8) 答辩
指导教师签名: 日期:
教研室主任签名: 日期:
系主任签名: 日期:
目 录
一、引言 5
1.1 编写目的 5
1.2 参考资料 5
二、 需求规约 5
2.1 业务描述 5
2.2 需求分析 6
三、 数据库环境说明 7
3.1数据库环境说明 7
四、 数据库的命名规则 7
4.1 数据库对象命名规则 7
4.2 数据项编码规则 7
五、 逻辑设计 8
5.1 E-R图 8
5.2创建关系模型 9
5.3 规范化分析 10
六、 物理设计 10
6.1表汇总 10
6.2表: 10
6.3视图的设计 14
6.4存储过程、函数及触发器的设计 14
七、 安全性设计 16
7.1 防止用户直接操作数据库的方法 16
7.2 用户帐号密码的加密方法 17
7.3 角色与权限 17
八、 数据库管理与维护说明 17
一、引言
1.1 编写目的
本文档是销售订单数据库管理系统设计文档的组成部分,编写数据库设计文档的目的是:明确数据库的表名、字段名等数据信息,用来指导后期的数据库脚本的开发,本文档遵循《销售订单数据库管理系统数据库设计和开发规范》。本文档的读者对象是需求人员、系统设计人员、开发人员、测试人员。
1.2 参考资料
资料名称
作者
文件编号、版本
《数据库系统概论》
王珊、萨师煊
2006年5月第4版
二、 需求规约
2.1 业务描述
销售订单数据库管理系统:
1、某销售商的订单系统需要如下信息:
每个供应商包含供应商编号、名称、地址、联系电话等信息。
每种产品包含产品号、产品名称、产品类别等信息。
每个供应商可供应多种产品,每种产品可由多个供应商供应。
客户包含编号、姓名、通信地址、电话等信息。
雇员包括编号、姓名、联系电话等信息。
订单包括订单号等信息。
一个客户可下多个订单,每个订单只能由一个客户下。
一个雇员可管理多个订单,每个订单只能由一个雇员管理。
一个订单订购多种产品,每种产品可在不同的订单中订购
2、系统功能基本要求:
按照一定条件查询、统计订单信息,例如订单量最多的客户或者产品。能够模拟完成一个订单交易全过程。
2.2 需求分析
数据项名
含义
类型
宽度
小数位数
Sno
Sname
Sadd
Stel
Pno
Pname
Ptype
Cno
Cname
Cadd
Ctel
Eno
Ename
Etel
Ono
P_S_num
P_O_num
供应商编号
供应商商名
供应商地址
供应商电话
产品号
产品名称
产品类别
客户编号
客户姓名
客户地址
客户电话
雇员编号
雇员姓名
雇员电话
订单号
供应数量
订购数量
char
varchar
varchar
int
char
varchar
char
char
varchar
varchar
int
char
varchar
char
char
int
int
8
10
20
15
8
10
10
8
10
20
15
8
10
15
15
数据结构
含义
组成
供应商S
产品P
客户C
雇员E
订单O
供应P_S
订购P_O
供应商情况表
产品情况表
客户情况表
雇员情况表
订单情况表
供应情况表
订购情况表
Sno+Sname+Sadd+Stel
Pno+Pname+Ptype
Cno+Cname+Cadd+Ctel
Eno+Ename+Etel
One+Cno+Eno
P_S_num+Rno+Pno
P_O_num+Pno+Ono
数据流名
含义
组成
S_case
P_case
C_case
E_case
O_case
P_S_case
P_O_case
供应商情况表
产品情况表
客户情况表
雇员情况表
订单情况表
供应情况表
订购情况表
Sno+Sname+Sadd+Stel
Pno+Pname+Ptype
Cno+Cname+Cadd+Ctel
Eno+Ename+Etel
One+Cno+Eno
P_S_num+Rno+Pno
P_O_num+Pno+Ono
三、 数据库环境说明
3.1
数据库实例
数据库系统
数据库部署环境
数据库设计工具
数据库存放位置
说明
销售订单数据库管理系统
Sql server 2008
Windows xp 系统,
E:\2010022B29
利用此系统能执行订单交易的全过程
四、 数据库的命名规则
4.1 数据库对象命名规则
数据库对象
命名规则
备注
表
英文拼写的首字母
例如:S (supplier)供应商表
视图
View_表名
例如:view_S 供应商视图
4.2 数据项编码规则
数据项
命名规则
数据类型
长度范围
备注
供应商编号
供应商商名
供应商地址
供应商电话
产品号
产品名称
产品类别
库存数量
客户编号
客户姓名
客户地址
客户电话
雇员编号
雇员姓名
雇员电话
订单号
供应数量
订购数量
英文拼写的首字母加功能简写
英文拼写的首字母加功能简写
英文拼写的首字母加功能简写
英文拼写的首字母加功能简写
英文拼写的首字母加功能简写
英文拼写的首字母加功能简写
英文拼写的首字母加功能简写
英文拼写的首字母加功能简写
英文拼写的首字母加功能简写
英文拼写的首字母加功能简写
英文拼写的首字母加功能简写
英文拼写的首字母加功能简写
英文拼写的首字母加功能简写
英文拼写的首字母加功能简写
英文拼写的首字母加功能简写
英文拼写的首字母加功能简写
英文拼写的首字母加功能简写
英文拼写的首字母加功能简写
定长的字符串
可变长度字符串
可变长度字符串
整数
定长的字符串
可变长度字符串
可变长度字符串
整数
定长的字符串
可变长度字符串
可变长度字符串
整数
定长的字符串
可变长度字符串
定长的字符串
定长的字符串
整数
整数
8
10
20
8
10
10
8
10
20
8
10
15
15
Sno
Sname
Sadd
Stel
Pno
Pname
Ptype
Pnum
Cno
Cname
Cadd
Ctel
Eno
Ename
Etel
Ono
P_S_num
P_O_num
五、 逻辑设计
5.1 画出E-R图
供应商
M
供应
产品
N
订购、
N
订单
L
下
客户
管理
雇员
L
1
L
1
编号
名称
联系电话电话
地址
产品类别
产品号
产品名称
订单号
地址
编号
姓名
电话
编号
姓名
电话
供应数量
订购数量
库存数量
5.2 创建关系模型
供应商(供应商编号,供应商名称,供应商地址,联系电话)
产品(产品编号,产品名称,产品类别,库存数量)
客户(客户编号,客户姓名,通信地址,联系电话)
雇员(雇员编号,姓名,联系电话)
订单(订单号,客户编号,雇员编号)
供应情况(供应商编号,产品编号,供应数量)
订购情况(产品编号,订单号,订购数量)
5.3 规范化分析
供应商表:
供应商编号→供应商名称,供应商编号→供应商地址,供应商编号→供应商联系电话
供应商表中不存在部分依赖和传递依赖,所以这个表是3NF的
产品表:
产品编号→产品名称,产品编号→产品类别,产品编号→库存数量
产品表中不存在部分依赖和传递依赖,所以这个表是3NF的
客户表
客户编号→客户姓名,客户编号→通信地址,客户编号→联系电话
客户表中不存在部分依赖和传递依赖,所以这个表是3NF的
雇员表:
雇员编号→护院姓名,雇员编号→联系电话
雇员表中不存在部分依赖和传递依赖,所以这个表是3NF的
订单号→客户编号,订单号→雇员编号
订单表中不存在部分依赖和传递依赖,所以这个表是3NF的
分析知道,这个数据库中所有表都是3NF,所以这个数据库是3NF的。
六、 物理设计
6.1表汇总
表名
功能说明
S
供应商表,是用来存储其编号,名字,地址和联系电话的
P
产品表,用来存储产品编号、名称类别和库存量
C
客户表,用来存储客户的编号、姓名、地址和联系电话
E
雇员表,用来存储雇员的编号姓名和联系电话
O
订单表,用来存储订单号,客户编号和管理它的雇员的编号
P_S
供应数量表,用来存储供应商编号,产品编号和其供应数量
P_O
订购数量表。用来存储产品编号订单号和其订购的数量
6.2表:
表名
S
数据库用户
DBA
主键
Sno
其他排序字段
索引字段
序号
字段名称
数据类型(精度范围)
允许为空Y/N
唯一Y/N
区别度
默认值
约束条件/说明
1.
2.
3.
4.
Sno
Sname
Sadd
Stel
Char(8)
Varchar(10)
Varchar(20)
Int(15)
N
N
Y
Y
Y
N
N
Y
高
低
主键
非空
非空
sql脚本
CREATE TABLE S
(
Sno char(8) primary key,
Sname varchar(10) not null,
Sadd varchar(20),
Stel int
);
备注
存储供应商信息
表名
P
数据库用户
DBA
主键
Pno
其他排序字段
索引字段
序号
字段名称
数据类型(精度范围)
允许为空Y/N
唯一Y/N
区别度
默认值
约束条件/说明
1.
2.
3.
Pno
Pname
Ptype
Pnum
Char(8)
Varchar(10)
Char(10)
int
N
N
N
Y
Y
N
N
N
高
高
低
主键
非空
非空
sql脚本
CREATE TABLE P
(
Pno char(8) primary key,
Pname varchar(10) not null,
Ptype char(10) not null,
Pnum int
);
备注
存储产品信息
表名
C
数据库用户
DBA
主键
Cno
其他排序字段
索引字段
序号
字段名称
数据类型(精度范围)
允许为空Y/N
唯一Y/N
区别度
默认值
约束条件/说明
1.
2.
3.
4.
Cno
Cname
Cadd
Ctel
Char(8)
Varchar(10)
Varchar(20)
Int(15)
N
N
Y
Y
Y
N
N
Y
高
低
主键
非空
sql脚本
CREATE TABLE C
(
Cno char(8) primary key,
Cname varchar(10) not null,
Cadd varchar(20),
Ctel int
);
备注
存储客户信息
表名
E
数据库用户
DBA
主键
Eno
其他排序字段
索引字段
序号
字段名称
数据类型(精度范围)
允许为空Y/N
唯一Y/N
区别度
默认值
约束条件/说明
1.
2.
3.
Eno
Ename
Etel
Char(8)
Varchar(10)
char(15)
N
N
Y
Y
N
Y
高
高
主键
非空
sql脚本
CREATE TABLE E
(
Eno char(8) primany key,
Ename varchar not null,
Etel char(15)
);
备注
存储雇员信息
表名
O
数据库用户
DBA
主键
Ono
其他排序字段
索引字段
序号
字段名称
数据类型(精度范围)
允许为空Y/N
唯一Y/N
区别度
默认值
约束条件/说明
1.
2.
3.
Ono
Cno
Eno
Char(8)
char(8)
char(8)
N
N
N
Y
Y
Y
无
C表中的Cno
E表中的Eno
sql脚本
CREATE TABLE O
(
Ono char(8) not null primary key,
Cno char(8) not null ,
Eno char(8) not null ,
FOREIGN KEY (Cno) REFERENCES C (Cno),
FOREIGN KEY (Eno) REFERENCES E (Eno)
);
备注
存储订单信息
表名
P_S
数据库用户
DBA
主键
Sno,Pno
其他排序字段
索引字段
序号
字段名称
数据类型(精度范围)
允许为空Y/N
唯一Y/N
区别度
默认值
约束条件/说明
1.
2.
3.
P_S_num
Sno
Pno
varChar(10)
char(8)
char(8)
N
N
N
N
Y
Y
低
主键
S表中的Sno
P表中的Pno
sql脚本
CREATE TABLE P_S
(
P_S_num int,
Sno char(8),
Pno char(8),
Primary key(Cno,Pno),
FOREIGN KEY (Cno) REFERENCES C (Cno),
FOREIGN KEY (Pno) REFERENCES P (Pno)
);
备注
存储供应关系信息
表名
P_O
数据库用户
DBA
主键
Pno,Ono
其他排序字段
索引字段
序号
字段名称
数据类型(精度范围)
允许为空Y/N
唯一Y/N
区别度
默认值
约束条件/说明
1.
2.
3.
P_O_num
Pno
Ono
varChar(10)
char(8)
char(8)
N
N
N
N
Y
Y
低
主键
P表中的Cno
O表中的Eno
sql脚本
CREATE TABLE P_O
(
P_O_num int,
Pno char(8),
Ono char(8) ,
Primary key(Pno,Ono),
FOREIGN KEY (Pno) REFERENCES P (Pno),
FOREIGN KEY (Ono) REFERENCES O (Ono)
);
备注
存储订单关系信息
6.3视图的设计
create view P_S_E_P_number
as
select Pno,sum(P_S_num) 提供的总数
from P_S
group by Pno
create view P_O_P_E_number
as
select Pno,sum(P_O_num) 订购的总数
from P_O
group by Pno
6.4存储过程、函数及触发器的设计
存储过程
create Procedure select_C_imformation
(@Cno char(12))
as
select *
from C
where Cno=@Cno
create Procedure select_E_imformation
(@Eno char(12))
as
select *
from E
where Eno=@Eno
create Procedure select_O_imformation
(@Ono char(12))
as
select *
from O
where Ono=@Ono
create Procedure select_ord_sit_imformation
(@Ono char(12),@Pno char(12))
as
select *
from P_O
where Ono=@Ono and Pno=@Pno
create Procedure select_P_imformation
(@Pno char(12))
as
select *
from P
where Pno=@Pno
create Procedure select_P_S_imformation
(@Pno char(12),@Sno char(12))
as
select *
from P_S
where Pno=@Pno and Sno=@Sno
create Procedure select_P_O_imformation
(@Ono char(12),@Pno char(12))
as
select *
from P_O
where Pno=@Pno and Ono=@Ono
触发器
create trigger PO_trigger
on P_O
after update
as
begin
update P
set Pnum=Pnum+(
select P_O_num from delected)
where Pno=(select Pno from inserted)
update P
set Pnum=Pnum-(
select P_O_num from inserted)
where Pno=(select Pno from inserted)
end
create trigger PS_trigger
on P_S
after update
as
begin
update P
set Pnum=Pnum+(
select P_S_num from delected)
where Pno=(select Pno from inserted)
update P
set Pnum=Pnum-(
select P_S_num from inserted)
where Pno=(select Pno from inserted)
end
七、 安全性设计
7.1 防止用户直接操作数据库的方法
USE 销售订单管理
EXEC SP_GRANTDBACCESS 'GY','GY';
GRANT SELECT,UPDATE,DELETE ON O TO GY
USE 销售订单管理
EXEC SP_GRANTDBACCESS 'CPGLY','CPGLY';
GRANT SELECT,UPDATE,DELETE ON P_S TO CPGLY
USE 销售订单管理
EXEC sp_grantdbaccess 'laoban', 'laoban';
EXEC sp_addrolemember 'db_owner', 'laoban'
用户只能用帐号登陆到应用软件,通过应用软件访问数据库,而没有其他途径操作数据库。
7.2 用户帐号密码的加密方法
exec sp_addlogin 'GY','123456','销售订单管理'; //GY,雇员
exec sp_addlogin 'CPGLY','123456','销售订单管理'; //CPGLY,产品管理员
exec sp_addlogin 'laoban','123456','销售订单管理'; //laoban,数据库拥有者
对用户帐号的密码进行加密处理,确保在任何地方都不会出现密码的明文。
此部分内容作者可以选择保留和去除。
用户帐号采用MD5进行数据加密后再录入数据库,以防止任何地方密码的安全性要求。
7.3 角色与权限
确定每个角色对数据库表的操作权限,如创建、检索、更新、删除等。每个角色拥有刚好能够完成任务的权限,不多也不少。在应用时再为用户分配角色,则每个用户的权限等于他所兼角色的权限之和。
角色
可以访问的表与列
操作权限
GY
O表全部
对O表进行增删改
CPGLY
P_S表
对P_S表进行增删改
Laoban
ALL
ALL
八、 数据库管理与维护说明
数据库完整备份,每周日执行一次
数据库日志备份,每天每隔1个小时备份一次
数据库差异备份,每天00:00执行一次
//完整型备份
BACKUP DATABASE 销售订单管理
TO DISK = 'D:\销售订单管理.bak' WITH NOINIT;
//日志备份
BACKUP LOG 销售订单管理
TO DISK = 'D:\销售订单管理.bak' WITH NOINIT;
//差异备份
BACKUP DATABASE 销售订单管理
TO DISK = 'D:\销售订单管理.bak' WITH NOINIT DIFFERENTIAL;
展开阅读全文