文档库 最新最全的文档下载
当前位置:文档库 › 外卖订餐商务网站数据库设计与实现

外卖订餐商务网站数据库设计与实现

武汉科技大学城市学院

课程设计报告

课程名称数据库应用课程设计

题目外卖订餐商务网站数据库设计与实现院系信息工程学部

专业电子商务

班级2012级电子商务

学号20121017822.

姓名

指导教师刘永真

目录

1 概述 (1)

2.数据库概念结构设计 (1)

2.1表的结构 (1)

2.2表的E-R图结构 (3)

3.创建数据库和表 (5)

3.1数据库创建的代码: (5)

3.2.1表的结构: (5)

3.2.2 创建表的代码: (6)

3.3 完整性设计 (7)

3.4 索引设计 (7)

4.插入表中的数据 (8)

4.1表数据插入的代码 (8)

4.2插入后效果 (10)

5.数据库的查询和视图 (11)

5.1实现查询 (11)

5.2视图的设计 (14)

6.存储过程 (15)

7.实验总结 (18)

1 概述

外卖是我们生活中必不可少的一部分,但是,很多外卖经营店往往会忽略管理系统的重要性。而本外卖点单管理系统集成了点单,订单号、外送时间,地点,金额等一系列功能,每一个环节分工明确,界面简洁明了,可视化程度高,有效地缩减了人为出错的概率。本管理系统实现了一体化的管理,使得外卖的点单更加迅捷。

2.数据库概念结构设计

2.1表的结构

图2.1 E-R图

第 2 页共21 页

2.2表的E-R图结构

图2.2实体关系图

图2.3客户属性图

图2.4订单表属性

图2.5订单详情

图2.6商家菜品属性

图2.7员工信息属性

3.创建数据库和表3.1数据库创建的代码:

CREATE DATABASE WMSC

ON(

NAME='WM_Data',

FILENAME='E:\WM_Data.mdf',

SIZE=10MB,

MAXSIZE=50MB,

FILEGROWTH=5%)

LOG ON(

NAME='WM_Log',

FILENAME='E:\WM_Log.ldf',

SIZE=2MB,MAXSIZE=5MB,FILEGROWTH=1MB)

3.2.1表的结构:

(二)配送员信息表

(五)订单详情表

3.2.2 创建表的代码:

CREATE TABLE客户信息表

(

客户编号char(10)NOT NULL PRIMARY KEY,

姓名char(8)NOT NULL,

电话号char(13)NOT NULL,

地址char(10)NOT NULL,

备注char(16)NOT NULL,

)

CREATE TABLE配送员信息表

(

配送员编号char(10)NOT NULL PRIMARY KEY,

员工姓名char(10)NOT NULL,

员工手机号char(20)NOT NULL,

员工身份证号char(30)NOT NULL,

)

CREATE TABLE商家菜品表

(

菜品编号char(10)NOT NULL PRIMARY KEY,

菜名char(10)NOT NULL,

价格money NOT NULL,

描述 varchar(30)

)

CREATE TABLE订单信息表

(订单编号char(10)NOT NULL PRIMARY KEY,

客户编号char(8)NOT NULL,

配送员编号char(10)NOT NULL,

下单时间datetime default(getdate())NOT NULL, foreign key(客户编号)

references客户信息表(客户编号),

foreign key(配送员编号)

references配送员信息表(配送员编号)

CREATE TABLE订单详情表

(订单编号char(10)NOT NULL,

菜品编号char(10)NOT NULL,

数量int NOT NULL,

总金额money NOT NULL,

primary key(订单编号,菜品编号),

foreign key(订单编号)

references订单信息表(订单编号),

foreign key(菜品编号)

references商家菜品表(菜品编号)

)

图3.1 所有表成功创建

3.3 完整性设计

在设计过程中“客户信息表”其中“客户编号”为主码;“配送员信息表”中“配送员编号”为主码;“商家菜品表”表中“菜品编号”为主码;“订单信息表”中“订单表”为主码;“订单详情表”中“订单编号”“菜品编号”为组合主键,满足了实体完整性要求。表中的每一列都对输入的数据为NOT NULL 和NULL进行了区分,以及定义了defaul默认时间,满足域完整性。“订单信息表”中“客户编号”“配送员编号”为外码,“订单详情表”中“菜品编号”“订单编号”为外码,满足参照完整性。再输入过程中满足用户定义完整性。

3.4 索引设计

在“客户信息表”中根据主码创建索引名为“PK__订单信息表__03317E3D”的聚集索引,在“配送员信息表”中根据主码创建索引名为“PK__配送员信息表__7B905C75”的聚集升序索引,“商家菜品表”中创建“PK__商家菜品表__7D78A4E7”的聚集升序索引,“订单详情表中”创建了“PK__订单详情表__07F6335A”的聚集升序索引,“订单信息表”中创建“PK__订单信息表__03317E3D”的聚集升序索引。

图3.1索引

4.插入表中的数据4.1表数据插入的代码

1.客户信息表代码:

INSERT INTO客户信息表(客户编号,姓名,电话号,地址,备注) VALUES('101','李华','153********','北七401','') VALUES('102','李明','153********','北七402','') VALUES('103','小朱','153********','北七403','') VALUES('104','张力','153********','北七404','')

VALUES('105','张雪','153********','北七405','')

VALUES('106','张帆','153********','北七406','')

VALUES('107','李文','153********','北七407','')

VALUES('108','刘明','153********','北七408','')

VALUES('109','陈翔','153********','北七409','')

VALUES('110','吴磊','153********','北七410','')

2.配送员信息表:

INSERT INTO配送员信息表

VALUES('201','姜雪','156********','420982************') VALUES('202','蒋丽','153********','420982************') VALUES('203','李江','153********','420982************') VALUES('204','张飞','153********','420982************') VALUES('205','李龙','156********','420982************') VALUES('206','王虎','153********','420982************') VALUES('207','刘达','153********','420982************') VALUES('208','钟飞','153********','420982************') VALUES('209','张浩','153********','420982************') VALUES('210','李萌','153********','420982************') 3.商家菜品表:

INSERT INTO商家菜品表

VALUES('301','鱼香肉丝',8,’鱼香’)

VALUES('302','鱼香茄子',8,’茄子’)

VALUES('303','肉丝',8,’肉’)

VALUES('304','酸辣肉丝',8,’酸辣’)

VALUES('305','藕丁',8,’藕’)

VALUES('306','麻辣香锅',8,’麻辣’)

VALUES('307','宫保鸡丁',8,’鸡肉黄瓜’)

VALUES('308','红烧鱼',8,’红’)

VALUES('309','干锅豆腐',8,’干锅’)

VALUES('310','青菜炒肉',8,’青菜’)

4.订单信息表:

INSERT INTO订单信息表

VALUES('401','101','201','')

VALUES('402','102','202','')

VALUES('403','103','203','')

VALUES('404','104','204','')

VALUES('405','105','205','')

VALUES('406','106','206','')

VALUES('407','107','207','')

VALUES('408','108','208','')

VALUES('409','109','209','')

VALUES('410','110','210','')

5.订单详情表:

INSERT INTO订单详情表

VALUES('401','301',2,16)

VALUES('402','302',3,24)

VALUES('403','303',4,32)

VALUES('404','304',1,8)

VALUES('405','305',1,8)

VALUES('406','306',1,8)

VALUES('407','307',1,8)

VALUES('408','308',1,8)

VALUES('409','309',1,8)

VALUES('410','310',1,8)

4.2插入后效果

图4.1客户信息表

图4.2配送员信息表

图4.3商家菜品表

图4.4订单信息表

图4.5订单详情表

5.数据库的查询和视图5.1实现查询

查询命令1:根据用户名查找用户购买记录

语句:

select

dbo.客户信息表.客户编号,姓名,

dbo.商家菜品表.菜品编号,菜名,价格,

dbo.订单详情表.订单编号,数量,总金额

from

客户信息表,订单详情表,订单信息表,商家菜品表

where

客户信息表.客户编号=订单信息表.客户编号

and订单详情表.订单编号=订单信息表.订单编号

and订单详情表.菜品编号=商家菜品表.菜品编号

图5.1查找用户购买记录

查询命令2:任意关键字搜索产品

语句:

select*from dbo.商家菜品表

where

菜名like'%鱼%'

or菜名like'%肉%'

or描述like'%肉%'

or菜名like'%辣%'

or描述like'%青菜%'

or菜名like'%藕%'

or菜名like'%豆腐'

or描述like'%鸡%'

图5.2任意关键字搜索产品

查询命令3:销量统计前三名

语句:

select top 3 *from订单详情表

order by数量desc

图5.3销量统计前三名

查询命令4:分类统计产品销量

语句:

select数量

from订单详情表

group by数量

图5.4分类统计产品销量

查询命令5:根据订单号管理配送员信息

语句:

select

订单信息表.订单编号,配送员信息表.配送员编号,员工姓名,员工手机号,员工身份证号from

配送员信息表,订单信息表

where

订单信息表.配送员编号=配送员信息表.配送员编号

图5.5根据订单号管理配送员信息

5.2视图的设计

1.所有产品和订单联系起来。

语句:

CREATE VIEW [dbo].[View_1]

AS SELECT订单信息表.订单编号,订单详情表.菜品编号,订单详情表.数量,订单详情表.总金额,订单信息表.配送员编号,商家菜品表.菜名

FROM订单信息表INNER JOIN 订单详情表ON订单信息表.订单编号=订单详情表.订单编号INNER JOIN 商家菜品表ON订单详情表.菜品编号=商家菜品表.菜品编号

5.6所有产品和订单联系起来视图

2.用户.产品.订单联系视图。

语句:

CREATE VIEW [dbo].[View_2]

AS

SELECT

客户信息表.客户编号,客户信息表.姓名,商家菜品表.菜品编号,商家菜品表.菜名,订单详情表.订单编号,订单详情表.总金额,订单详情表.数量,订单信息表.配送员编号

FROM订单信息表INNER JOIN 客户信息表ON订单信息表.客户编号=客户信息表.客户编号INNER JOIN 订单详情表ON订单信息表.订单编号=订单详情表.订单编号INNER JOIN 商家菜品表ON订单详情表.菜品编号=商家菜品表.菜品编号

图5.7用户.产品.订单联系视图

6.存储过程1.存储过程:根据用户查找记录:

create procedure chaxun

as

select

dbo.客户信息表.客户编号,姓名,

dbo.商家菜品表.菜品编号,菜名,价格,

dbo.订单详情表.订单编号,数量,总金额

from

客户信息表,订单详情表,订单信息表,商家菜品表

where

客户信息表.客户编号=订单信息表.客户编号

and订单详情表.订单编号=订单信息表.订单编号

and订单详情表.菜品编号=商家菜品表.菜品编号

图6.1根据用户查找记录的存储:2.存储过程:根据任意关键字搜索产品示例:

语句:create procedure adc

as

select*from dbo.商家菜品表

where

菜名like'%鱼%'

or菜名like'%肉%'

or描述like'%肉%'

or菜名like'%辣%'

or描述like'%青菜%'

or菜名like'%藕%'

or菜名like'%豆腐'

or描述like'%鸡%'

图6.2根据任意关键字搜索产品示例3.存储过程:根据订单号管理配送员信息

语句:

select

订单信息表.订单编号,

配送员信息表.配送员编号,员工姓名,员工手机号,员工身份证号from

配送员信息表,订单信息表

where

订单信息表.配送员编号=配送员信息表.配送员编号

6.3根据订单号管理配送员信息

7.实验总结

实践出真知。这句话说得一点也没错,在整个数据库课程设计过程中,只有实践才能对事物的本质有更深的认识,才能有发言权,一切认识都是建立在认识的基础上。通过了一个星期的数据课程设计,我对数据库这门课程有了更深的认识,对原本在我脑中像是火星语的SQL语言有了更加具体的认识。

数据库课程设计加深了我对数据库这门课程的兴趣,让我深刻了解了数据库的强大功能,引起我对研究SQL语言运用规则的兴趣。数据库概念设计、数据库逻辑结构设计和数据库保护设计是数据库设计的重要步骤,每一步的设计都是至关重要的,并且是相互联系的。经过一个星期的课程设计,让我对E-R图的设计有一个整体的想法,并且对逻辑结构设计中关键字的设定能够很好的把握,分析每个表中的联系,更加注意表间和数据之间的相互约束。

数据库课程设计不仅让我更进一步了解了数据库这门课程,而且让我在做事方面也形成了一套很好的想法。我在做事方面学会了坚持、合作、对待问题不断充满疑问和要有耐心去解决问题,更要和同学们交流,对不懂的问题也不耻下问。从课程设计中最深的还是做事要坚持和要有耐心。在设计数据库的过程中,会不断遇到种种问题,而且每个问题都会与上下步骤之间都会有联系,一个问题的不解可能会导致下一个问题的无法操作,所以我们要有耐心找出问题,分析原因,然后再解决问题,不要半途而废,要坚持下去,这样才能在学习上有所突破。

总之,虽然为了做这个课程设计花了很多的时间,却让我感受到了要将书上的理论应用到实践绝对不只是停滞在课堂上的。一次实践可以让我看到自己的欠缺,同时也巩固了课堂上掌握的知识点。

相关文档