
课程设计
设计名称:网上书店系统数据库设计
网上书店系统数据库设计
网上书店系统数据库设计 2
一、需求分析 3
1.1编写目的 3
1.2背景 3
1.3可行性分析 3
1.3.1经济可行性 3
1.3.2技术可行性 4
1.4用户分析 4
1.5网上书店系统的特点 4
1.6定义 4
1.7 系统功能性需求 5
1.7.1 系统结构 5
1.7.2 功能性需求分类 6
1.8 数据字典 6
1.9 实体间的联系 6
二、概念结构设计 8
三、逻辑结构设计 13
四、系统实现 16
4.1表的建立 16
4.2 数据库关系图 20
4.3 表的信息 20
4.4 视图 23
4.5 索引 26
4.6 触发器 26
4.7存储过程 28
4.8主要代码 29
五、课程设计总结 30
一、需求分析
在需求分析阶段,主要分析了用户的各种需求,在此基础上确定了新系统的功能,具体内容包括编写目的、开发背景、相关定义、开发目标等部分。
1.1编写目的
随着信息技术的发展与普及,网络竞争越发的激烈、残酷,传统的营销方式在现今的社会竞争中已经力不从心,尤其是书本的营销。客户作为市场的最大资源,已经成为了市场营销的核心,谁争取到了最多的客户,谁就取得了最大的成功,对客户的把握将最终决定企业的命运。书籍网络营销于一种新的营销模式出现在当前人们的生活中,而
随着电子商务的发展,人们已经更多地关注了网上购物,这就无形中对网上书店的管理提出了更高的要求,需要其现代化、系统化、规范化、高效化。如何更加完善自身的管理,扩大网上书城的知名度,提高经济效益,增加客户量,成为网上书店管理迫切需要解决的问题。 网上书店管理的特殊性在于书籍信息量大、信息更新快、客户信息量大、客户反馈信息量大、信息间关联多、涉及的各层管理人员复杂. 同时其分工、权限又各不相同,如果所有的工作都按部就班地手工完成,将在很大程度上浪费劳动力和时间,降低工作效率。 因此通过引进计算机管理系统,把大量的工作微机化管理,这样就可以实现高效、安全、合理的管理模式,本系统就是基于这样一个目的来编写的。
1.2背景
数据库名称:OBMS
软件系统名称:网上书店管理系统(Online Bookstore Management System,简称OBMS)。
软件系统用户:一般中小型网上书店。
软件及数据安装中心:湖北汽车工业学院文管楼实验室。
1.3可行性分析
1.3.1经济可行性
随着信息技术的发展与普及,网络竞争越发的激烈、残酷,传统的营销方式在现今的社会竞争中已经力不从心,尤其是书本的营销。客户作为市场的最大资源,已经成为了市场营销的核心,谁争取到了最多的客户,谁就取得了最大的成功,对客户的把握将最终决定企业的命运,现在做电子商务的网站很多,网络书店就只有那么几个屈指可数的知名网站,像是“当当网上书城”、“卓越网”等
正是由于网上书店的数量少,而且不规范,以及在网络书店的客户量上存在很大的发展空间,为满足广大读者朋友的需求,网上书店的系统的建立将是未来一笔可观的财富。
1.3.2技术可行性
网络管理日益趋向于系统化、完整化、人性化。在网络书店的数据库设计上,我们运用到SQL2000编程,具有完善的数据库设计思想和操作能力。
1.4用户分析
随着网络的普及,越来越多的读者都习惯在网上看书、买书。在网络上用户可以找到自己想要的书籍,解决了用户区域性的问题,为广大读者提供一个平台能够找到珍贵的书籍。网上书店数据库系统是针对广大的读者,在线的用户量极具的增加,网上读书的客户量也在扩大,例如“当当”网上书城、“卓越”网。我们在整个书店的管理上将网络书籍进行分类,包括出版社管理、用户管理、订单管理、销售管理、物流管理等,以便更好的熟悉整个网络书店的后台数据库的运行环境。
1.5网上书店系统的特点
简单性:在实现平台的功能的同时,尽量让平台操作简单易懂。
针对性:平台设计使网上书店系统我们的数据库设计主要是后台管理,所以具有很强的针对实用性:我们在数据库设计的时候,将用户、管理员、书籍等基本信息在数据库中存储,具有良好的实用性。
1.6定义
所有的表名的命名规则 :
所有的表名用具有实际含义的英文单词组成,本系统共有12张表:
books:书籍信息表,记录书籍信息
stock:书籍库存表,记录书籍库存信息
booktype:书籍大类别表,记录书籍总体分类
booktype2:书籍小类别表,记录书籍总分类下属的小分类
publish:出版社信息表,记录出版社信息
users:用户表,记录用户信息
Administrators:管理员表,记录管理员信息
leaveWords:用户留言表,记录用户留言信息
orders:订单表,记录订单信息
sales:销售单表,记录销售单信息
shipped:运单表,记录运单信息
waybill:发货表,记录发货单信息
1.7 系统功能性需求
1.7.1 系统结构
根据网上书店的项目功能需求及对网上书店的调研,该系统的系统总体结构如下图所示。
运单管理
网上书店的业务流程图
用户管理
1.7.2 功能性需求分类
| 功能类别 | 子功能 | |
| 后台 管理 模块 | 书籍信息管理 | 管理书籍相关信息 |
| 书籍类别管理 | 对书籍的类别进行初始化,并进行增删改查等操作 | |
| 订单管理 | 查询用户订单,并确认,生成销售单 | |
| 销售管理 | 对销售订单进行确认,并进行书籍的销售出库 | |
| 留言管理 | 管理员查看留言 | |
| 运单管理 | 由第三方物流公司对出库的书籍进行配送 | |
| 前台 管理 模块 | 用户信息管理 | 用于用户的注册、修改信息操作 |
| 搜索书籍 | 提供以不同方式进行搜索书籍的功能 | |
| 订购书籍 | 提供用户订购书籍的功能 | |
| 留言功能 | 用于用户对所购买书籍提出反馈意见,管理员可查看留言 | |
| 首页显示书籍 | 用于在首页上现实特价图书和最新出版书籍的信息 | |
管理员(管理员编号、用户名、管理员姓名、管理员密码、管理员邮箱)
用户(用户名、密码、电话、邮箱、家庭住址、真实姓名、邮政编号)
用户留言(留言编号、用户名、主题、提交时间、留言内容、回复状态)
书籍(书籍编号、书籍名称、ISBN、作者、出版社编号、版次、出版日期、内容简介、书籍小类别编号)
库存(ISBN、库存数量、原始价格、折扣店、登记日期)
书籍大类别(大类别编号、大类别名称)
书籍小类别(小类别编号、小类别名称、所属大类别)
出版社(出版社编号、出版社名称、出版社电话、出版社地址)
订单(订单编号、用户名、订购时间、书籍编号、订购数量、状态)
销售单(销售单编号、订单编号、创建日期、创建人、状态)
发货单(发货单编号、销售单编号、发货日期、发货人)
运单(运单编号、发货单编号、快递公司名称、送货人姓名、送货人电话)
1.9 实体间的联系
通过以上分析可知,实体之间的联系有:
管理员与用户之间是一对多关系(1:n)
用户与用户留言之间是一对多关系(1:n)
出版社与书籍之间是一对多关系(1:n)
书籍与库存十件事一对一关系(1:1)
书籍小类别与书籍之间是一对多关系(1:n)
书籍大类别与书籍小类别之间是一对多关系(1:n)
用户与订单之间是一对多关系(1:n)
订单与销售单之间是一对一关系(1:1)
销售单与发货单之间是一对一关系(1:1)
发货单与运单之间是一对一关系(1:1)
二、概念结构设计
管理
邮编
名称
小类别名称
大类别名称
登记说明
真实姓名
回复状态
用户编号
状态
状态
发货人
联系方式
三、逻辑结构设计
表一 商品信息表 books
| 字段名 | 字段描述 | 类型 | 可否为空 | 备注 |
| isbn | ISBN号 | 字符串 长度20 | 可 | |
| Book_id | 鞋子编号 | 字符串 长度6 | 否 | 主键 |
| title | 鞋子名称 | 字符串 长度80 | 否 | |
| author | 作者 | 字符串 长度50 | 否 | |
| Pub_id | 供应商编号 | 整型 | 可 | |
| Publishdate | 生产日期 | 日期/时间 | 可 | |
| introduction | 简介 | 字符串 长度2000 | 可 | |
| type | 鞋子小类别编号 | 整型 | 否 | 外键 |
| 字段名 | 字段描述 | 类型 | 可否为空 | 备注 |
| isbn | ISBN号 | 字符串 长度20 | 否 | 主键 |
| stock_qty | 库存数量 | 字符串 长度10 | 可 | |
| price | 原始价格 | 货币 | 否 | |
| discount | 折扣点 | 小数类型 | 可 | |
| logdate | 登记日期 | 日期/时间 | 可 |
| 字段名 | 字段描述 | 类型 | 可否为空 | 备注 |
| Bigtype_id | 大类别编号 | 整型 | 否 | 主键,标识列 |
| Bigtype_name | 大类别名称 | 字符串 长度50 | 否 | 唯一 |
| 字段名 | 字段描述 | 类型 | 可否为空 | 备注 |
| Smalltype_id | 小类别编号 | 整型 | 否 | 主键,标识列 |
| Smalltype_name | 小类别名称 | 字符串 长度50 | 否 | 唯一 |
| Bigtype_id | 所属大类别编号 | 整型 | 否 |
| 字段名 | 字段描述 | 类型 | 可否为空 | 备注 |
| Pub_id | 供应商编号 | 整型 | 否 | 主键,标识列 |
| Pub_name | 供应商名称 | 字符串 长度50 | 否 | 唯一 |
| Pub_phone | 供应商电话 | 字符串 长度15 | 否 | |
| Pub_add | 供应商地址 | 字符串 长度50 | 否 |
| 字段名 | 字段描述 | 类型 | 可否为空 | 备注 |
| Username | 用户名 | 字符串 长度20 | 否 | 主键 |
| Password | 密码 | 字符串 长度50 | 否 | |
| Phone | 电话 | 字符串 长度15 | 可 | |
| E-mall | 电子邮箱 | 字符串 长度30 | 可 | |
| Address | 家庭住址 | 字符串 长度100 | 否 | |
| True_name | 真实姓名 | 字符串 长度20 | 否 | |
| Postcode | 邮政编号 | 字符串 长度6 | 否 |
| 字段名 | 字段描述 | 类型 | 可否为空 | 备注 |
| Administrator_id | 管理员编号 | 整型 | 否 | 主键 |
| Username | 用户名 | 字符串 长度20 | 否 | 外键 |
| Administrator_name | 管理员姓名 | 字符串 长度20 | 否 | |
| Administrator_password | 管理员密码 | 字符串 长度50 | 否 | |
| Administrator_e-mall | 管理员邮箱 | 字符串 长度30 | 可 |
| 字段名 | 字段描述 | 类型 | 可否为空 | 备注 |
| Lword_id | 留言编号 | 整型 | 否 | 主键,标识列 |
| Username | 用户名 | 字符串 长度6 | 否 | |
| Subject | 主题 | 字符串 长度6 | 否 | |
| Submit_date | 提交时间 | 日期型 | 可 | |
| Lword_texe | 留言内容 | 字符串 长度4000 | 可 | |
| Re_status | 回复状态 | 字符串 长度10 | 可 | 0-“待回复” 1-“已回复” |
| 字段名 | 字段描述 | 类型 | 可否为空 | 备注 |
| Order_id | 订单编号 | 整型 | 否 | 主键,标识列 |
| username | 用户名 | 字符串 长度20 | 否 | |
| Order_date | 订购时间 | 日期型 | 可 | 默认系统时间 |
| Book_id | 鞋子编号 | 字符串 长度6 | 否 | |
| quantity | 订购数量 | 整型 | 否 | 大于0 |
| status | 状态 | 位类型 长度1 | 可 | 0-“未处理” 1-“已处理” |
| 字段名 | 字段描述 | 类型 | 可否为空 | 备注 |
| Sale_id | 销售单编号 | 整型 | 否 | 主键,标识列 |
| Order_id | 订单编号 | 整型 | 否 | 外键 |
| Sale_date | 创建日期 | 日期型 | 可 | 默认系统时间 |
| Saler | 创建人 | 字符串 长度20 | 否 | |
| Sale_status | 状态 | 位类型 长度1 | 可 | 0-“未发货” 1-“已发货” |
| 字段名 | 字段描述 | 类型 | 可否为空 | 备注 |
| Ship_id | 发货单编号 | 整型 | 否 | 主键,标识列 |
| Sale_id | 销售单编号 | 整型 | 否 | 外键 |
| Ship_date | 发货日期 | 日期型 | 可 | 默认系统时间 |
| Ship_man | 发货人 | 字符串 长度20 | 否 |
| 字段名 | 字段描述 | 类型 | 可否为空 | 备注 |
| Waywill_no | 运单编号 | 整型 | 否 | 主键,标识列 |
| Ship_id | 发货单编号 | 整型 | 否 | 外键 |
| express_company | 快递公司名称 | 字符串 长度20 | 否 | |
| Delivery_man | 送货人姓名 | 字符串 长度20 | 可 | |
| Delivery-man_phone | 送货人电话 | 字符串 长度15 | 可 |
4.1表的建立
书籍信息表 books的建立
书籍库存表 stock 的建立
书籍大类别表 booktype的建立
书籍小类别表 booktype2 的建立
出版社信息表 publish 的建立
用户表 users 的建立
管理员表Administrators 的建立
订单表 orders 的建立
用户留言表 leaveWords 的建立
销售单表 sales 的建立
发货表 shipped 的建立
运单表 waybill 的建立
4.2 数据库关系图
4.3 表的信息
4.4 视图
创建视图:
视图的创建:在users表中建立username为ran520611视图
V1中视图
在books表中建立视图如下:
建立如下视图:视图中包含每个用户的留言编号
视图查询:建立视图v6_books并查询视图中book_id、title、auther
查询结果如下:
建立并查询视图:
向视图中插入新的数据:
插入后在users表中:
删除视图中的记录:
4.5 索引
以上是对users表建立的索引
4.6 触发器
对于在网上书店系统数据库,表users的username列与表administrators的usersname满足下列参照完整性规则。
A.向users表插入或修改一记录时,通过触发器检查记录的users值在administrators表中是否存在,若不存在,则取消插入或修改操作;
B.修改administrators表的usersname字段值时,该字段在users表中的对应值也做相应修改。
C.删除administrators表中一记录的同时删除该记录administrators字段值在users表中对应的记录。
(1) 向users表插入或修改一记录时,通过触发器检查记录的username值在administrators表中是否存在,若不存在,则取消插入或修改操作。
(2) 修改administrators表的username字段值时,该字段在users表中的对应值也做相应修改。
对administrators表建立更新触发器
IF (COLUMNS_UPDATED())
测试是否插入或更新了提及的列,仅用于 INSERT 或 UPDATE 触发器中。COLUMNS_UPDATED 返回 varbinary 位模式,表示插入或更新了表中的哪些列。
COLUMNS_UPDATED 函数以从左到右的顺序返回位,最左边的位表示表中的第一列;向右的下一位表示第二列,依此类推。在 INSERT 操作中 COLUMNS_UPDATED 将对所有列返回 TRUE 值,因为这些列插入了显式值或隐性 (NULL) 值。
(3)删除CLASS表中一记录的同时删除该记录CLASS_ID字段值在STUDENT表中对应的记录。
对administrators表建立删除触发器
4.7存储过程
创建添加记录的存储过程
创建修改记录的存储过程
创建删除记录的存储过程
调用三个存储过程:
存储过程的调用
4.8主要代码
触发器的应用
create trigger administratorsdelete on dbo.administrators
for delete
as
begin
delete from users
where username=(select username from deleted)
end
go
users表的存储过程usersadd
create procedure usersadd
(@username varchar(20),@password varchar(50),@phone varchar(15),@e_mall varchar
(30),@address varchar(100),@turename varchar(20),@postcode varchar(6))
as
begin
insert into users
values(@username,@password,@phone,@e_mall,@address,@turename,@postcode)
end
return
go
修改users表的存储过程usersupdate
create procedure usersupdate
(@userid varchar(20),@username varchar(20),@password varchar(50),
@phone varchar(15),@e_mall varchar
(30),@address varchar(100),@turename varchar(20),@postcode varchar(6))
as
begin
update users
set username=@username,password=@password,phone=@phone,e_mall=@e_mall,
address=@address,
turename=@turename,postcode=@postcode
where username=@userid
end
return
go
删除users表的删除过程usersdelete
create procedure usersdelete
(@username varchar(20))
as
begin
delete from users
where username=@username
end
return
go
五、课程设计总结
这次课程设计我们花了一个星期的时间来完成,感觉时间过的很快。在大家的共同合作下,终于完成了这次课设。在完成过程中,我主要工作是完成概念结构设计。在设计之前我们共同讨论了一下网上书店的整个流程,主要的工作步骤,设计ER图。完成的不是那么的完美。但对于数据库设计的整个流程有了了解。同时我也明白了在IT行业中分工合作的重要性。课程设计的完成离不开队友的帮助。
