《数据库系统》课程设计
土特产网上销售系统设计与开发
一、 系统需求分析
(一) 需求概述
随着计算机技术在各行各业的应用日益广泛深入,网络购物早已盛行。
电子商务在各行各业的发展战略中占有重要地位,已成为各大企业的必经之路。商品流通不局限于传统渠道。网络平台已成为企业展示自我、提升形象的舞台。企业通过建立网站,将产品、资源等方面的信息展示在互联网上。计算机和互联网技术本身具有信息透明、信息传播速度快、管理速度快的特点,不仅可以改善原有的商业模式和效率,还可以为企业带来更高的收益。因此,拥有自己的购物网站对于企业来说是非常重要的。 与传统零售业相比,网络购物具有许多无法比拟的优势。首先,以店铺销售或商场销售为代表的零售行业,由于地域限制,局限在小范围内。借助互联网,消费者可以通过网上商城浏览和获取世界各地商家的商品信息;其次,通过网络购物渠道,消费者可以在家购物;第三,同样是商品信息和统计的管理,传统零售行业需要花费大量的人力才能完成,而很多销售网站信息可以轻松实现自动化管理,大大降低企业的管理成本;最后,建立自己的网上购物系统,有利于提升企业和商家的企业形象,提高服务质量,展示企业信息化水平。
我设计的网购系统的数据库开发和存储,可以存储卖家需要销售的本地商品的所有信息,以及用户的所有信息。方便用户根据自己的喜好浏览自己喜欢的东西。如果他想买土特产,可以去网上买,登录后就可以去购物了。 店内各种土特产都分类详细,很容易找到当地的土特产品。同时,搜索系统可以轻松找到相关的本地产品。同时,买了喜欢的东西后,就可以结账了。通过填写您自己的信息,您可以下订单并完成购物流程。
现在我们要建立一个本地产品的在线销售系统。我们应该管理卖家的本地产品、用户信息、用户的购买记录等基本信息。确保足够的安全。使网上购物系统得以推广,让更多的卖家和购物者认为网上购物系统非常实惠和方便。这是一个非常有用的购物系统
功能模块设计:
表1:功能模块设计图
面向不同用户实现不同功能:
- 面向顾客时,顾客可以浏览全部的商品信息,因为对商品进行了分类,所以顾客选择的商品种类更加细化,在完成购物后可以查看订单信息状态。
- 面向管理员时:管理员需要对各类商品,用户和订单信息进维护和修改,但是不能修改管理员自己的信息,在用户,商品信息出现差错时及时改正。
- 面向供货商时,供货商应只对商品负责,所以可以对商品增添减少,供应量取决于订单量,所以可以查看订单信息。包括自己的信息也可以查看。
(二) 业务流分析
用户界面:
表2:用户流程图
普通用户:
- 浏览商品、按类别查询商品,查看商品的详细信息
- 查看购买商品之后的订单信息
- 注册成为用户
管理员界面:
表3:管理员流程图
管理员:
- 查看商品信息,判断是否需要补充商品,如果需要补充则通知供应商增删商品
- 查看订单信息,判断订单信息和商品库存是否一一对应,如果有误需要修改订单信息
- 可根据供应商供给需求修改供应商信息
- 修改用户信息
供应商界面:
表4:供应商流程图
供应商:
- 查看商品信息,根据商品数量决定是否供应
- 查看订单信息,以核对商品数量
**
(三) 数据流分析
**
表5:数据流图
(四) 数据字典
二、 数据库概念结构设计
(一) 实体分析
经需求分析,本次课程设计中包含五个实体,他们分别是:用户实体、订单实体、管理员实体、商品实体、商品组实体、供应商实体。
(二) 属性分析
用户实体属性:用户编号,姓名,电话,密码,地址
表6:用户实体属性图
土特产商品实体属性:土特产商品编号,名称,价格,土特产商品组编号
表7:土特产商品实体属性图
订单实体属性:订单编号,订单日期,价格,用户编号,土特产商品编号
表8:订单实体属性图
土特产商品组实体属性:土特产商品组编号,土特产商品组名称,管理员编号,供应商编号
表9:土特产商品组实体属性图
管理员实体属性:管理员编号,管理员姓名,电话,密码,地址
表9:管理员实体属性图
供应商实体属性:供应商编号,密码,电话,地址,土特产商品组编号,订单编号
表10:供应商实体属性图
(三) 联系分析
多个供应商可以供应多种商品组,多个用户也可以购买多种商品,多种商品的集合是一个商品组,但是一种商品对应一个订单,用户购买商品产生唯一订单对应唯一的商品。多个管理员管理所有商品组和所有订单和供应商,所以是多对多的关系。
(四) 概念模型设计(CDM图)
表11:CDM图
三、数据库物理结构设计
(一)概念模型转化为物理模型
-
一对一关系的转化
用户只能查看一项订单,所以用户和订单是一对一关系
一个商品产生一个订单,所以是一对一关系。 -
一对多关系的转化
一个商品组由多个商品组成,商品组和商品关系是一对多 -
多对多关系的转化
多个管理员管理多种信息
一个用户可以购买多个商品,一个商品也可以被多个用户购买
多个供应商供应多种商品组,也可以查看多个订单
(二)物理逻辑模型设计(PDM图)
表12:PDM图
四、数据库物理实现
(一) 表设计
用户信息表:
字段名称 数据类型 长度 取值范围 备注
用户编号 char 10 0001-9999 主键,非空
姓名 vchar 20 非空
电话 Char 10
密码 Char 10 非空
地址 vchar 20
土特产商品信息表:
字段名称 数据类型 长度 取值范围 备注
土特产商品编号 char 10 0001-9999 主键,非空
土特产商品组编号 char 10 0001-9999 外键,非空
名称 Vchar 20 非空
价格 Float 非空
订单信息表:
字段名称 数据类型 长度 取值范围 备注
订单编号 Char 10 0001-9999 主键,非空
订单日期 Data 非空
价格 Float 非空
用户编号 char 10 0001-9999 外键,非空
土特产商品编号 char 10 0001-9999 外键,非空
土特产商品组信息表
字段名称 数据类型 长度 取值范围 备注
土特产商品组编号 char 10 0001-9999 主键,非空
土特产商品组名称 vchar 20 非空
供应商编号 char 10 0001-9999 外键,非空
管理员编号 char 10 0001-9999 外键,非空
管理员信息表:
字段名称 数据类型 长度 取值范围 备注
管理员编号 char 10 0001-9999 主键,非空
管理员姓名 vchar 20 非空
密码 Char 10 非空
电话 Char 10 非空
地址 vchar 20
供应商信息表:
字段名称 数据类型 长度 取值范围 备注
供应商编号 char 10 0001-9999 主键,非空
密码 Char 10 非空
电话 Char 10 非空
地址 vchar 20
土特产商品组编号 char 10 0001-9999 外键,非空
订单编号 Char 10 0001-9999 外键,非空
(二) 创建表和完整性约束代码设计
1. 创建用户信息表及完整性约束:
create table 用户信息表(
用户编号 char(10) not null primary key,
姓名 varchar(20) not null,
密码 char(20) not null,
电话 char(10) null,
地址 varchar(20) null,
)
2. 创建土特产商品信息表及完整性约束:
create table 土特产商品信息表(
土特产商品编号 char(10) not null primary key,
土特产商品组编号 char(10) not null,
名称 varchar(20) not null,
价格 float not null,
)
alter table 土特产商品信息表
add constraint FK_土特产商品信息表_REFRENCE_土特产商品组信息表 foreign key (土特产商品组编号)
references 土特产商品组信息表(土特产商品组编号)
3. 创建订单信息表及完整性约束:
create table 订单信息表(
订单编号 char (10) not null primary key,
用户编号 char (10) not null,
土特产商品编号 char (10) not null,
订单日期 datetime not null,
价格 float not null,
)
alter table 订单信息表
add constraint FK_订单信息表_REFRENCE_用户信息表 foreign key (用户编号)
references 用户信息表(用户编号)
alter table 订单信息表
add constraint FK_订单信息表_REFRENCE_土特产商品信息表 foreign key (土特产商品编号)
references 土特产商品信息表(土特产商品编号)
4. 创建土特产商品组信息表及完整性约束:
create table 土特产商品组信息表(
土特产商品组编号 char(10) not null primary key,
土特产商品组名称 varchar(20) not null,
管理员编号 char(10) not null,
供应商编号 char(10) not null
)
alter table 土特产商品组信息表
add constraint FK_土特产商品组信息表_REFRENCE_管理员信息表 foreign key (管理员编号)
references 管理员信息表(管理员编号)
alter table 土特产商品组信息表
add constraint FK_土特产商品组信息表_REFRENCE_供应商信息表 foreign key (供应商编号)
references 供应商信息表(供应商编号)
5. 创建管理员信息表及完整性约束:
create table 管理员信息表(
管理员编号 char(10) not null primary key,
管理员姓名 varchar(20) not null,
密码 char(20) not null,
电话 char(10) not null,
地址 varchar(20) null,
)
6. 创建供应商信息表及完整性约束:
create table 供应商信息表(
供应商编号 char(10) not null primary key,
密码 char(20) not null,
电话 char(10) not null,
地址 varchar(20) null,
土特产商品组编号 char (10) not null,
订单编号 char (10) not null
)
alter table 供应商信息表
add constraint FK_供应商信息表_REFRENCE_土特产商品组信息表 foreign key (土特产商品组编号)
references 土特产商品组信息表(土特产商品组编号)
alter table 供应商信息表
add constraint FK_供应商信息表_REFRENCE_订单信息表 foreign key (订单编号)
references 订单信息表(订单编号)
(三) 创建索引、视图和触发器
1. 索引
对管理员编号和供应商编号和用户编号创建唯一非聚集索引
CREATE UNIQUE INDEX NUM on 管理员信息表(管理员编号);
CREATE UNIQUE INDEX NUM2 on 供应商信息表(供应商编号);
CREATE UNIQUE INDEX NUM3 on 用户信息表(用户编号);
2. 视图
1.对土特产商品创建视图
CREATE VIEW 土特产商品_view
AS SELECT *
FROM 土特产商品信息表
-
对土特产商品组创建视图
CREATE VIEW 土特产商品组_view
AS SELECT *
FROM 土特产商品组信息表 -
对订单信息创建视图
CREATE VIEW 订单_view
AS SELECT *
FROM 订单信息表
3. 触发器
1.在新用户注册成功后,显示欢迎光临
CREATE TRIGGER trigger_Emp
ON 用户信息表
AFTER INSERT
AS
PRINT’欢迎光临’
2.管理员不可删除管理员成员
CREATE TRIGGER DELETE_ID
ON 管理员信息表
instead of DELETE
AS
begin
print’禁止删除’
ROLLBACK TRANSACTION
Endd
3.在成功增加商品组后显示供应成功
CREATE TRIGGER trigger_Emp1
ON 土特产商品组信息表
AFTER INSERT
AS
PRINT’供货成功’
五、数据库功能调试
(一) 用户模块
- 用户注册
-
查询土特产商品
-
查看订单信息
(二) 供应商模块
- 供应商品
-
退还商品
-
查看订单
(三) 管理员模块
-
修改用户信息
-
修改商品信息
-
修改供应商信息
-
修改订单信息
-
修改商品组信息
六、设计总结
在本次课程设计中,遇到了许多的困难,在技术方面有非常多的困难。比如在powerdesigner的使用上,由于大部分仍是英文,需要学习的东西非常多。在设计cdm时,表与表之间的关系一点要搞清楚,所以在一开始的时候,一点要最全局有个清楚的构思,我在写到后面时,不停的推翻前面的方案,导致图需要修改的很多,这就导致花费了许多的时间。
在用pdm转成数据库时,连接不上数据库,在网上找了许多的方法,仍是不行,可能是缺失某个程序,但是可以转换成sql语句,但是cmd在转换成pdm时会把关系转换成表,原本我以后可以直接使用pdm转换的sql代码,但是会多出许多表,并且没有外键,只有索引,并且索引非常多,是因为太多的表造成的,所以最后我自己创建表设立主外键。
在插入数据时,因为如果没有主键内容,插入外键信息会报错,只能将外键删除再重新插入,
在功能实现上仍有不足,所有的主键信息都无法修改,也不能置空,所以在修改别的信息时如果牵扯到主键的修改就无法修改。
总体说来,在这次一个学期的课程设计中,我学到了很多在课堂内学不到的知识。整个开发的过程对我来说是一次能力真正提高的过程;是将以前所学知识充分利用的过程;是一次将理论应用于实践的过程。我觉得这次课程设计是一次很有收获的实践.