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