资源描述
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) 答辩
指导老师署名: 日期:
教研室主任署名: 日期:
系主任署名: 日期:
目 录
一、引言
1.1 编写目标
本文档是销售订单数据库管理系统设计文档组成部分,编写数据库设计文档目标是:明确数据库表名、字段名等数据信息,用来指导后期数据库脚本开发,本文档遵照《销售订单数据库管理系统数据库设计和开发规范》。本文档读者对象是需求人员、系统设计人员、开发人员、测试人员。
1.2 参考资料
资料名称
作者
文件编号、版本
《数据库系统概论》
王珊、萨师煊
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
Windows xp 系统,
E:\022B29
利用此系统能实施订单交易全过程
四、 数据库命名规则
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;
展开阅读全文