1、学 号20121017822.武汉科技大学城市学院课程设计 报 告 课程名称 数据库应用课程设计 题 目 外卖订餐商务网站数据库设计与实现 院 系 信息工程学部 专 业 电子商务 班 级 2012级电子商务 学 号 20121017822. 姓 名 指导教师 刘永真 目录1 概述12.数据库概念结构设计12.1表的结构12.2表的E-R图结构33.创建数据库和表53.1数据库创建的代码:53.2.1表的结构:53.2.2 创建表的代码:63.3 完整性设计73.4 索引设计74.插入表中的数据84.1表数据插入的代码84.2插入后效果105.数据库的查询和视图115.1实现查询115.2视图的
2、设计146.存储过程157.实验总结181 概述外卖是我们生活中必不可少的一部分,但是,很多外卖经营店往往会忽略管理系统的重要性。而本外卖点单管理系统集成了点单,订单号、外送时间,地点,金额等一系列功能,每一个环节分工明确,界面简洁明了,可视化程度高,有效地缩减了人为出错的概率。本管理系统实现了一体化的管理,使得外卖的点单更加迅捷。2.数据库概念结构设计2.1表的结构表的结构客户信息表订单详情表商家菜品表客户编号寝室楼栋姓名寝室房间号电话号码备注订单编号下单时间总金额菜品编号菜名描述价格送餐员工表员工编号员工姓名员工电话号员工身份证号数量图2.1 E-R图2.2表的E-R图结构顾客订单菜式下订
3、单订购1NMN配送配送员N1图2.2实体关系图客户信息表地址姓名电话号备注客户编号图2.3客户属性图配送员编号订单编号下单时间订单信息表客户编号图2.4订单表属性菜品编号订单号订单详情表总金额数量图2.5订单详情菜品编号价格商家菜品表菜名描述图2.6商家菜品属性员工手机号配送员编号员工姓名配送员信息表员工身份证号图2.7员工信息属性3.创建数据库和表3.1数据库创建的代码:CREATE DATABASE WMSCON(NAME=WM_Data,FILENAME=E:WM_Data.mdf,SIZE=10MB,MAXSIZE=50MB,FILEGROWTH=5%)LOG ON (NAME=WM_
4、Log,FILENAME=E:WM_Log.ldf,SIZE=2MB,MAXSIZE=5MB,FILEGROWTH=1MB)3.2.1表的结构:(一)客户信息表列名数据类型长度是否为空说明客户编号Char8No主码姓名Char8No电话号Char13No地址Char10No备注varChar16(二)配送员信息表列名数据类型长度是否为空说明配送员编号Char10No主码员工姓名Char10No员工手机号Char20No员工身份证号Char30No(三)商家菜品表列名数据类型长度是否为空说明菜品编号Char10No主码菜名Char15No数量IntNo价格MoneyNo描述Varchar30(四
5、订单信息表列名数据类型长度是否为空说明订单编号Char10No主码客户编号Char10No外码配送员编号Char10No下单时间Getdate系统默认No(五)订单详情表列名数据类型长度是否为空说明订单编号Char10No组合关键字(来自其他两表的外键)菜品编号Char10No总金额MoneyNo3.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,)CRE
6、ATE 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 NUL
7、L ,配送员编号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(订单编号) ref
8、erences 订单信息表(订单编号), foreign key(菜品编号) references 商家菜品表(菜品编号)图3.1 所有表成功创建3.3 完整性设计在设计过程中“客户信息表”其中“客户编号”为主码;“配送员信息表”中“配送员编号”为主码;“商家菜品表”表中“菜品编号”为主码;“订单信息表”中“订单表”为主码;“订单详情表”中“订单编号”“菜品编号”为组合主键,满足了实体完整性要求。表中的每一列都对输入的数据为NOT NULL 和NULL进行了区分,以及定义了defaul默认时间,满足域完整性。“订单信息表”中“客户编号”“配送员编号”为外码,“订单详情表”中“菜品编号”“订单编
9、号”为外码,满足参照完整性。再输入过程中满足用户定义完整性。3.4 索引设计在“客户信息表”中根据主码创建索引名为“PK_订单信息表_03317E3D”的聚集索引,在“配送员信息表” 中根据主码创建索引名为“PK_配送员信息表_7B905C75”的聚集升序索引,“商家菜品表”中创建“PK_商家菜品表_7D78A4E7”的聚集升序索引,“订单详情表中”创建了“PK_订单详情表_07F6335A”的聚集升序索引,“订单信息表”中创建“PK_订单信息表_03317E3D”的聚集升序索引。图3.1索引4.插入表中的数据4.1表数据插入的代码1.客户信息表代码:INSERT INTO 客户信息表(客户编
10、号,姓名,电话号,地址,备注)VALUES(101,李华,15384624452,北七401,)VALUES(102,李明,15384624962,北七402,)VALUES(103,小朱,15384625242,北七403,)VALUES(104,张力,15384636962,北七404,)VALUES(105,张雪,15384777962,北七405,)VALUES(106,张帆,15384644462,北七406,)VALUES(107,李文,15384333362,北七407,)VALUES(108,刘明,15311124962,北七408,)VALUES(109,陈翔,1538455
11、5962,北七409,)VALUES(110,吴磊,15384445562,北七410,)2.配送员信息表:INSERT INTO 配送员信息表VALUES(201,姜雪,15666624452,420982199407217777)VALUES(202,蒋丽,15384897962,420982199407107777)VALUES(203,李江,15333625242,420982199407117777)VALUES(204,张飞,15384444962,420982199407127777)VALUES(205,李龙,15666667962,420982199407137777)VAL
12、UES(206,王虎,15384555462,420982199407147777)VALUES(207,刘达,15344433362,420982199407157777)VALUES(208,钟飞,15311666662,420982199407167777)VALUES(209,张浩,15377777962,420982199407177777)VALUES(210,李萌,15395645562,420982199407187777)3.商家菜品表:INSERT INTO 商家菜品表VALUES(301,鱼香肉丝,8,鱼香)VALUES(302,鱼香茄子,8,茄子)VALUES(303,
13、肉丝,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,)VALU
14、ES(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插入后
15、效果图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 * f
16、rom 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 订单信息表.订
17、单编号,配送员信息表.配送员编号,员工姓名,员工手机号,员工身份证号from 配送员信息表,订单信息表where 订单信息表.配送员编号=配送员信息表.配送员编号图5.5根据订单号管理配送员信息5.2视图的设计1.所有产品和订单联系起来。语句:CREATE VIEW dbo.View_1AS SELECT 订单信息表.订单编号, 订单详情表.菜品编号, 订单详情表.数量, 订单详情表.总金额, 订单信息表.配送员编号, 商家菜品表.菜名FROM 订单信息表INNER JOIN 订单详情表ON 订单信息表.订单编号= 订单详情表.订单编号INNER JOIN 商家菜品表ON 订单详情表.菜品编号
18、 商家菜品表.菜品编号 5.6所有产品和订单联系起来视图2.用户.产品.订单联系视图。语句:CREATE VIEW dbo.View_2ASSELECT 客户信息表.客户编号, 客户信息表.姓名, 商家菜品表.菜品编号, 商家菜品表.菜名, 订单详情表.订单编号, 订单详情表.总金额, 订单详情表.数量, 订单信息表.配送员编号FROM 订单信息表 INNER JOIN 客户信息表ON 订单信息表.客户编号= 客户信息表.客户编号INNER JOIN 订单详情表ON 订单信息表.订单编号= 订单详情表.订单编号INNER JOIN 商家菜品表ON 订单详情表.菜品编号= 商家菜品表.菜品编号
19、图5.7用户.产品.订单联系视图6.存储过程1.存储过程:根据用户查找记录:create procedure chaxunasselect dbo.客户信息表.客户编号, 姓名,dbo.商家菜品表.菜品编号,菜名,价格,dbo.订单详情表.订单编号,数量,总金额from 客户信息表,订单详情表,订单信息表,商家菜品表where客户信息表.客户编号=订单信息表.客户编号and 订单详情表.订单编号=订单信息表.订单编号and 订单详情表.菜品编号=商家菜品表.菜品编号图6.1根据用户查找记录的存储:2存储过程:根据任意关键字搜索产品示例:语句:create procedure adcassele
20、ct * 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.实验总结实践出真知。这句话说得一点
21、也没错,在整个数据库课程设计过程中,只有实践才能对事物的本质有更深的认识,才能有发言权,一切认识都是建立在认识的基础上。通过了一个星期的数据课程设计,我对数据库这门课程有了更深的认识,对原本在我脑中像是火星语的SQL语言有了更加具体的认识。数据库课程设计加深了我对数据库这门课程的兴趣,让我深刻了解了数据库的强大功能,引起我对研究SQL语言运用规则的兴趣。数据库概念设计、数据库逻辑结构设计和数据库保护设计是数据库设计的重要步骤,每一步的设计都是至关重要的,并且是相互联系的。经过一个星期的课程设计,让我对E-R图的设计有一个整体的想法,并且对逻辑结构设计中关键字的设定能够很好的把握,分析每个表中的
22、联系,更加注意表间和数据之间的相互约束。数据库课程设计不仅让我更进一步了解了数据库这门课程,而且让我在做事方面也形成了一套很好的想法。我在做事方面学会了坚持、合作、对待问题不断充满疑问和要有耐心去解决问题,更要和同学们交流,对不懂的问题也不耻下问。从课程设计中最深的还是做事要坚持和要有耐心。在设计数据库的过程中,会不断遇到种种问题,而且每个问题都会与上下步骤之间都会有联系,一个问题的不解可能会导致下一个问题的无法操作,所以我们要有耐心找出问题,分析原因,然后再解决问题,不要半途而废,要坚持下去,这样才能在学习上有所突破。总之,虽然为了做这个课程设计花了很多的时间,却让我感受到了要将书上的理论应
23、用到实践绝对不只是停滞在课堂上的。一次实践可以让我看到自己的欠缺,同时也巩固了课堂上掌握的知识点。实训评分表评分标准:1. 学生是否严格遵守课程设计纪律,按照规定时间完成设计任务(占20%)2. 课程设计完成质量:(占50%)(1)是否采用了良好的设计方法,独立完成课程设计。 (2)课程设计各分段的任务是否按时完成及完成的质量。(3)是否完成课程设计任务书指定的全部要求。 3.系统演示效果:(占10%)4.课程设计报告书的撰写规范 (占20%)课程设计报告书的撰写规范要求与毕业设计(论文)的要求相同。教师评分:1. 学生出勤得分: _2. 内容质量得分: _3系统演示得分: 4. 撰写规范得分: _最终评定成绩(以优、良、中、及格、不及格评定):_ 教师评语: 根据该生在课程设计期间,是否严格遵守课程设计纪律,按照规定时间完成设计任务,完成的程序设计的质量与规范,提交的课程设计报告书的质量与规范等多方面的评分,该生本次课程设计的评分为:_ 教师签名: 日期: 年 月 日