数据库网上购物系统设计.docx
《数据库网上购物系统设计.docx》由会员分享,可在线阅读,更多相关《数据库网上购物系统设计.docx(18页珍藏版)》请在冰豆网上搜索。
数据库网上购物系统设计
数据库应用课程设计报告
网上购物系统数据库设计
学生姓名:
***
学号:
201****
班级:
*******
指导老师:
*****老师
学院:
**学院
提交日期:
2014年6月19日
数据库应用课程设计评阅
评阅项目
完成情况
得分
背景功能需求5%
概念设计
30%
逻辑设计
20%
物理设计
10%
数据库实施
15%
功能实现
10%
文档质量、设计过程表现10%
成绩
前言
网络购物的兴起改变了人们的购物观念,也改变了人们的购物需求。
每个人的购物清单都遍布全国各地,面对如此庞大的数据流量,网络购物系统应运而生,这个系统主要完成客户在网上购物时填写的订单信息所相关到的业务,并可以对所有的订单经及客户信息进行修改和查询。
方便客户和网络商城人员查阅订单信息等。
本系统主要建立了基本的需求表并优化,在它们之间建立好必要的联系方便查询和修改等,完成基本功能。
需求分析
设计本系统模拟客户在网上购物的管理内容,包括查询商品信息、订单信息、客户信息、购买后商品评论等处理情况,系统需要管理的情况如下:
系统功能背景资料
客户在网上购买商品的管理内容包括:
可随时查询可订商品的详细情况,如商品分类、生产厂商、每个厂商的实际存货量、规定的最低存货量以及商品其他描述,便于客户选订。
客户可订购多种所需商品,每种商品可订若干份,交清所需金额后,订购处理即告完成。
为便于邮寄,客户需写明如下信息:
客户名、EMAIL、姓名、性别、邮政编码、地址等,网店将即时为每一个客户编制唯一代码。
商品售出,并且客户拿到后可对商品进行评价,商品所属网店店主可以对每条评论进行查看,一种商品可以有多人进行评论,系统要给每一条评论编号并记录评论内容、评论时间、发表人等。
网上商城对每种商品订购人数不限,每个客户可多次订购,所订商品亦可重复。
系统功能
1).查询可订购商品的详细情况。
2).客户通过管理员根据自己的需求选购商品,完成一次订购后需进行结账才能提交订单。
3).查询自己的购买情况。
4).可对各库表进行插入、修改、删除、查询等基本操作。
5).能详细查询某商品的订出情况,并且能统计出某商品总订购数量与总金额。
6).实现客户完成一次订购任务后汇总总金额。
7).网店可查询客户对商品的评价,并进行回复。
概要结构设计
通过对局部应用的选择,逐一设计出分E-R图,并对各个分E-R图进行合并,生成初步E-R图,消除不必要的系统冗余,可以得出网上购物系统E-R图。
图1“商品”实体E-R图
图2“客户”实体E-R图
图3“订单”实体E-R图
图4“订单明细”实体E-R图
图5“生产厂商”实体E-R图
图6“生产明细”实体E-R图
图7“评论”实体E-R图
网上购物系统E-R图如下:
图8系统E-R图
逻辑结构设计
关系模式设计
根据概念结构的设计,可以将系统E-R图转换为以下关系模式(画横线的为各关系的码):
商品(商品号,商品名称,商品分类,厂商名,商品其他描述,单价),外码:
厂商号
客户(客户号,姓名,EMAIL,客户电话,性别,邮政编码,地址),外码:
订单(订单号,客户号,收货地址,订单日期),外码:
客户号
订单明细(订单号,商品号,数量,商品总价),外码:
订单号,商品号
生产厂商(厂商号,厂商名,商品号,),外码:
商品号
生产明细(厂商号,商品号,实际存货量,最低存货量),外码:
厂商号,商品号
评论(评论编号,内容,评论时间,客户号),外码:
客户号
关系模式的分析优化
1.对以上关系模式进行函数依赖分析
考察关系模式:
商品(商品名称,商品分类,单价,商品其他描述,厂商号)
商品号—>商品名称
商品号—>商品分类
商品号—>单价
商品号—>商品其他描述
商品号—>厂商名
商品它只有一个码:
(商品编号)这里没有任何属性对(商品编号)部分依赖或传递依赖,所以此关系模式属于3NF。
考察关系模式:
客户(客户号,姓名,EMAIL,客户电话,性别,邮政编码,地址)
客户号—>姓名
客户号—>EMAIL
客户号—>客户电话
客户号—>性别
客户号—>邮政编码
客户号—>地址
客户它只有一个码:
客户号,这里没有任何属性对客户编码部分依赖或传递依赖,所以此关系模式属于3NF。
考察关系模式:
订单(订单号,客户号,收货地址,订单日期)
订单号—>客户号
订单号—>收货地址
订单号—>订报日期
订单它有一个码:
(订单号),这里没有任何属性对(订单号)部分依赖或传递依赖,所以此关系模式属于3NF。
考察关系模式:
订单明细(订单号,商品号,数量,商品总价)
(订单号,商品号)—>数量
(订单号,商品号)—>商品总价
订单详情它有一个码:
(订单号,商品号)这里没有任何属性对(订单号,商品号)部分依赖或传递依赖,所以此关系模式属于3NF。
考察关系模式:
生产厂商(厂商号,厂商名,商品号)
(厂商号)—>厂商名
(厂商号)—>商品号
厂商它有一个码:
(厂商号),这里没有任何属性对(厂商号)部分依赖或传递依赖,所以此关系模式属于3NF。
考察关系模式:
生产明细(厂商号,商品号,实际存货量,最低存货量)
(厂商号,商品号)—>实际存货量
(厂商号,商品号)—>最低存货量
考察关系模式:
评论(评论编号,内容,评论时间,客户号)
(评论编号)—>内容
(评论编号)—>评论时间
(评论编号)—>客户号
2.系统完整性设计
商品(商品号,商品名称,商品分类,厂商名,商品其他描述,单价)其中:
商品号为主码,商品名称,商品分类,生产厂商,单价约束都为非空,商品其他描述可为空。
客户(客户号,姓名,EMAIL,客户电话,性别,邮政编码,地址)其中:
客户号为主码;姓名,EMAIL,客户电话,性别,邮政编码,地址约束都为非空。
订单(订单号,客户号,收货地址,订单日期)其中:
订单号为主码;客户号为外码,参照(客户(客户号));收货地址,订单日期约束都为非空。
订单明细(订单号,商品号,数量,商品总价),(订单号,商品号)为主码;订单号和商品号为外码,分别参照(订单(订单号))和(商品(商品号));数量,商品总价约束都为非空。
生产厂商(厂商号,厂商名,商品号)其中厂商号为主码;商品号为外码,参照(商品(商品号))厂商名约束为非空。
生产明细(厂商号,商品号,实际存货量,最低存货量)其中(厂商号,商品号)为主码;厂商号和商品号为外码,分别参照(生产厂商(厂商号))和(商品(商品号));实际存货和最低存货约束都为非空。
评论(评论编号,内容,评论时间,客户号)其中评论编号为主码;客户号为外码,参照(客户(客户号));内容,评论时间,约束都为非空。
数据库物理设计
表商品信息表结构
字段名
说明
类型
长度
可否为空
约束
ProductID
商品号
字符型
10
否
主键
Productname
商品名称
字符型
20
否
Unitprice
单价
数值型
否
Category
商品分类
字符型
10
否
Manufacturename
厂商名
字符型
10
否
外码
Other
商品其他描述
字符型
50
是
表客户信息表结构
字段名
说明
类型
长度
可否为空
约束
CustomerID
客户号
字符型
10
否
主键
Name
姓名
字符型
20
否
Sex
性别
字符型
8
否
Email
EMAIL
字符型
20
否
Postcode
邮政编码
字符型
10
否
Phonenumber
客户电话
字符型
20
否
Address
地址
字符型
50
否
表订单信息表结构
字段名
说明
类型
长度
可否为空
约束
OrderID
订单号
字符型
10
否
主键
CustomerID
客户号
字符型
20
否
外键
Orderdate
订单日期
数值型
否
Taddress
收货地址
字符型
50
否
表订单明细信息表结构
字段名
说明
类型
长度
可否为空
约束
OrderID
订单号
字符型
10
否
主键、外键
ProductID
商品号
字符型
26
否
主键、外键
quantity
数量
字符型
10
否
Totalprice
总价
字符型
20
否
表生产厂商信息表结构
字段名
说明
类型
长度
可否为空
约束
manufactureID
厂商号
字符型
10
否
主键
manufacturename
厂商名
字符型
26
否
ProductID
商品号
字符型
8
否
外键
表生产明细信息表结构
字段名
说明
类型
长度
可否为空
约束
manufactureID
厂商号
字符型
10
否
主键、外键
ProductID
商品号
字符型
10
否
主键、外键
Pquantity
实际存货量
字符型
10
否
Lquantity
最低存货量
字符型
10
否
表评论信息表结构
字段名
说明
类型
长度
可否为空
约束
CommentID
评论号
字符型
10
否
主键
Comment
内容
字符型
150
否
Commentdate
评论时间
数值型
否
CustomerID
客户号
字符型
10
否
外键
数据库实施
数据库构建
各数据表说明
编号
数据表名称
类型
内容
1
商品
主表
记录报刊信息
2
客户
主表
记录客户信息
3
订单
主表
记录订单基本信息
4
订单明细
辅助表
记录订单详细信息
5
生产厂商
辅助表
记录生产厂商基本信息
6
生产明细
辅助表
记录商品在厂的存货信息
7
评论
主表
记录评论信息
数据库创建
在SQLSERVER2005中创建网上购物系统数据库,在数据库中创建商品,客户,订单,订单明细,生产厂商,生产明细,评论数据表及加入相关约束。
创建了满足管理需求的视图,写出相关业务操作所需的查询语句等。
操作代码详见“_孔维星.sql”文件。
数据库操作
--创建数据库shoppingonline
createdatabaseshoppingonline
on
(
name=shoppingonline,
filename='c:
\',
size=5,
maxsize=10,
filegrowth=10%)
logon
(
name=shoppingonline_log,
filename='c:
\',
size=3,
maxsize=5,
filegrowth=1)
go
--创建商品信息表ProductInfo
createtableProductInfo
(
Productidnchar(10)primarykey,
Productnamenvarchar(20)notnull,
Unitpricemoneynotnull,
categorynchar(10)notnull,
manufacturenamenchar(10)notnull,
othernvarchar(20)notnull,
)
go
--创建客户信息表customerinfo
createtablecustomerinfo
(
customeridnchar(10)primarykey,
namenvarchar(20)notnull,
sexnchar
(1)notnull,
emailnchar(20)notnull,
postcodenchar(10)notnull,
phonenumbernchar(11)notnull,
addressnvarchar(50)notnull
)
go
--创建订单信息表orderinfo
createtableorderinfo
(
orderidnchar(10)primarykey,
customeridnchar(10)notnull,
orderdatedatetimenotnull,
taddressnvarchar(50)notnull,
foreignkey(customerid)referencescustomerinfo(customerid)
)
go
--创建订单明细信息表orderdetailinfo
createtableorderdetailinfo
(
orderidnchar(10)notnull,
productidnchar(10)notnull,
quantitynchar(10)notnull,
totalpricenchar(20)notnull,
primarykey(orderid,productid),
foreignkey(orderid)referencesorderinfo(orderid),
foreignkey(productid)referencesproductinfo(productid)
)
go
--创建生产厂商信息表manufactureinfo
createtablemanufactureinfo
(
manufactureidnchar(10)notnullprimarykey,
manufacturenamenchar(26)notnull,
productidnchar(10)notnull,
foreignkey(productid)referencesproductinfo(productid)
)
go
--创建生产明细信息表producedetailinfo
createtableproducedetailinfo
(
manufactureidnchar(10)notnull,
productidnchar(10)notnull,
Pquantitynchar(10)notnull,
lquantitynchar(10)notnull,
primarykey(manufactureid,productid),
foreignkey(manufactureid)referencesmanufactureinfo(manufactureid),
foreignkey(productid)referencesproductinfo(productid)
)
go
--创建评论信息表commentinfo
createtablecommentinfo
(
commentidnchar(10)notnullprimarykey,
commentnchar(3)notnull,
commentdatedatetimenotnull,
customeridnchar(10)notnull,
foreignkey(customerid)referencescustomerinfo(customerid)
)
go
--插入数据
--商品信息表productinfo
insertintoproductinfovalues('0000001','铅笔',2,'黑色','一厂','成绵路号')
insertintoproductinfovalues('0000002','毛笔',8,'墨色','二厂','长虹大道号')
insertintoproductinfovalues('0000003','圆珠笔',5,'蓝色','三厂','仙人路号')
--客户信息表customerinfo
insertintocustomerinfovalues('0000011','王强','男','','432645','','成都双流')
insertintocustomerinfovalues('0000022','吴霞','女','','564656','','湖北武汉')
insertintocustomerinfovalues('0000033','曾强','男','','582656','','湖南长沙')
go
--订单信息表orderinfo
insertintoorderinfovalues('0000111','0000011','2014-02-02','成都双流')
insertintoorderinfovalues('0000222','0000022','2014-03-03','湖北武汉')
insertintoorderinfovalues('0000333','0000033','2014-04-04','湖南长沙')
go
--订单明细信息表orderdetailinfo
insertintoorderdetailinfovalues('0000111','0000001','100','200')
insertintoorderdetailinfovalues('0000222','0000002','50','400')
insertintoorderdetailinfovalues('0000333','0000003','100','500')
go
--生产厂商信息表manufactureinfo
insertintomanufactureinfovalues('0001111','一厂','0000001')
insertintomanufactureinfovalues('0002222','二厂','0000002')
insertintomanufactureinfovalues('0003333','三厂','0000003')
go
--生产明细信息表producedetailinfo
insertintoproducedetailinfovalues('0001111','0000001','9000','900')
insertintoproducedetailinfovalues('0002222','0000002','8000','800')
insertintoproducedetailinfovalues('0003333','0000003','7000','700')
go
--评论信息表commentinfo
insertintocommentinfovalues('0011111','优','2014-04-04','0000011')
insertintocommentinfovalues('0022222','良','2014-05-05','0000022')
insertintocommentinfovalues('0033333','差','2014-06-06','0000033')
go
--简单查询
--查询全部商品的名称和单价
selectproductname,unitpricefrom
--查询全部客户的编号、姓名、地址、联系电话
selectcustomerid,name,address,phonenumberfrom
--查询全部订单的编号和订单日期
selectorderid,orderdatefrom
--查询下过订单的客户的姓名
selectnamefromjoinon查询订单编号为'0000111'的客户号、客户名、性别
selectfromjoinonwhereorderid='0000111'
部分系统功能实现
总结
之前选择网上购物这个题目的时候,觉得这个题目应该是相对比较容易的,但是实际起来并非如此。
在分析实体的时候,本来以为只需要题目给出的四个实体就可以了,但是在画E-R图的时候发现有冗余,所以我又添加了“生产明细”和“订单明细”两个表,另外,为了更细化系统,又添加了一个“生产厂商”表。
不仅如此,在画E-R图的时候,我也犯了一些错误,比如给属性添加属性,这是对知识掌握不牢固的体现,提醒我要回去好好复习了。
E-R图画出来之后就容易了,因为脉络已经基本清晰了,但是在确定字符长度的时候还是拿不准到底该写多少,在参考书上的内容之后才确定下来。
由于VB已经学习了有一年时间了,有点生疏,在用VB做部分系统功能实现的时候,根据实验指导书一步一步走,最终还是做了出来。
通过这次的实践,我对数据库的学习有了进一步的巩固,但是回去之后还得再看一下书才可以,还有VB也得再复习复习了。
另外,通过这次实践,也让我第一次把理论联系到了实际,虽然这个系统并不太完善,但是只要今后多练习,我相信还是能够掌握这门学科的。