拉格木呷数据库实训报告.docx

上传人:b****5 文档编号:29954728 上传时间:2023-08-03 格式:DOCX 页数:26 大小:959.92KB
下载 相关 举报
拉格木呷数据库实训报告.docx_第1页
第1页 / 共26页
拉格木呷数据库实训报告.docx_第2页
第2页 / 共26页
拉格木呷数据库实训报告.docx_第3页
第3页 / 共26页
拉格木呷数据库实训报告.docx_第4页
第4页 / 共26页
拉格木呷数据库实训报告.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

拉格木呷数据库实训报告.docx

《拉格木呷数据库实训报告.docx》由会员分享,可在线阅读,更多相关《拉格木呷数据库实训报告.docx(26页珍藏版)》请在冰豆网上搜索。

拉格木呷数据库实训报告.docx

拉格木呷数据库实训报告

数据库课程设计

题目:

在线交易网站的客户购买功能数据库分析及实现

 

 

姓 名:

拉格木呷

学 号:

2012080332024

学院:

信息学院

专业:

计算机科学与技术

指导教师:

马楠

2015年1月22日

一、系统需求收集分析

1.项目调查、资料收集情况

研究三个不同的网上交易网站

一.研究京东商城

商品(商品编号,商品名称,商品价格,商品规格,商品颜色,商品数量)

订单(订单编号,用户名称,支付信息,快递信息,商品名称,订单金额)

用户(用户名称,电话,地址,电子邮箱)

二.研究淘宝网

商品(商品编号,商品名称,商品价格,商品规格,商品颜色,商品数量)

订单(订单编号,用户名称,支付信息,快递信息,商品名称,订单金额)

用户(用户名称,联系方式,地址,电子邮箱)

三.研究当当网

商品(商品编号,商品名称,商品价格,商品规格,商品颜色,商品数量)

订单(订单编号,用户名称,支付信息,快递信息,商品名称,订单金额)

研究总结

综合浏览国内三大主流交易网站后,发现都大同小异。

无非就是由一些日常生活中耳熟能详,触手可及的实体构成。

人类社会的一切活动都离不开对信息的处理,由于信息世界中的绝大部分信息都可以用数据来表示,因此,信息处理实际上也可以说是数据处理。

商品,用户,订单这三个是电子商务网站不可或缺的元素。

现实生活中实实在在的这三个实体有其属性,商品属性有:

商品编号,商品名称,商品价格,商品规格,商品颜色,商品数量等;订单属性有:

订单编号,用户名称,支付信息,快递信息,商品名称,订单金额等;用户属性有:

用户名称,联系方式,地址,电子邮箱等。

把商品、用户(客户)、订单这三者作为我此次实训研究的切入点,分析三者的数据及三者之间的数据联系。

我们借用DBMS来完成对三大主流电商的相似实体的数据及数据之间联系的分析。

2.项目概述

通过分析现有在线销售网站,了解并熟悉此种网站的特点、功能实现流程,从而开发出一个简易的在线商品销售系统。

3.主要任务要求

●访问并分析现有的在线图书销售网站(三个)

●确定网站的功能

●确定数据库概念设计与数据库逻辑设计

●根据数据库逻辑设计完成数据库建立

●根据网站所需功能确定存储过程、触发器等程序。

二、数据库系统设计

4.引言

如今我们已经走进互联网时代,越来越多的事情都可以在互联网上解决:

网上收发邮件、网上聊天、网上打电话、网上游戏,等等。

当然,买东西同样也可以在网上实现。

现在,网上商城数量繁多,其销售的东西也是不同。

既有凡客这种服饰商城,也有1号店这种吃货天堂,新蛋这种数码电器商城也陆续出现了。

当然,传统的纸质图书也有亚马逊、当当这类网站在经营。

虽然电子书市场正逐渐发展,但不可否认的是纸质书籍还是占很大一部分。

本次课程设计就是围绕“在线交易网站购买功能”这一中心展开。

5.系统任务描述

根据“一、1”中对三个网站进行的分析,我们可以提取出以下实体需要的属性。

用户(用户编号,用户名称,电话,地址,电子邮箱)主键:

用户编号

商品(商品编号,商品名称,商品价格,商品规格,商品数量)主键:

商品编号

购买(订单编号,用户编号,商品编号,支付信息,快递信息,订单金额)主键:

订单编号外键:

用户编号、商品编号

数据库概念结构设计

图“用户”实体及其属性的E-R图表示

“商品”实体及其属性的E-R图表示

“购买”实体及其属性的E-R图表示

 

各实体及之间联系的E-R图表示

6.数据库逻辑结构设计

用户表设计

实体属性名称

属性代码

数据类型

完整性约束

用户编号

userId

Int

Primarykey

用户名称

userName

Varchar(30)

Notnull

电话

phone

Int

Notnull

地址

addr

Nvarchar(100)

Notnull

电子邮箱

email

Nvarchar(100)

Notnull

商品表设计

实体属性名称

属性代码

数据类型

完整性约束

商品编号

productId

Int

Primarykey

商品名称

productName

nvarchar(100)

unique

商品价格

productPrice

Int

Check(productPrice>0)

商品规格

productSize

Int

Check(productSize>0)

商品数量

productCount

Int

Check(productCount>=0)

购买表设计

实体属性名称

属性代码

数据类型

完整性约束

订单编号

orderId

Int

Primarykey

支付信息

payMessage

Varchar(20)

Notnull

快递信息

expressMessage

Varchar(20)

Notnull

订单金额

orderCheck

int

orderCheck>0

7.数据库物理结构设计(张翌)

注:

本项目最终在Windows8操作系统,MicrosoftSQLServer2012测试通过。

1)建立数据库

 SQLCode 

代码1建立数据库时自动生成的SQL代码

2)建立表

SQLCode 

执行后数据库内表结构如图:

建立表后数据库内表结构

 

3)输入示例数据

SQLCode 

createtableClient

userIdintprimarykey,

userNamenvarchar(100)notnull,

phoneintnotnull,

addrnvarchar(100)notnull,

emailnvarchar(100)notnull

insertintoClientvalues('024','拉格木呷','945529','北四环东路97号','lagemuga@');

insertintoClientvalues('025','刘晓弟','945530','北四环东路91号','liuxiaodi@');

insertintoClientvalues('026','张鹤轩','945531','北四环东路95号','zhanghexuan@');

insertintoClientvalues('027','高迪','945532','北四环东路94号','gaodi@');

insertintoClientvalues('028','李英妲','945533','北四环东路98号','李英妲@');

insertintoClientvalues('029','谢申兵','945534','北四环东路99号','xieshenbing@');

createtableproduct

productIdintprimarykey,

productNamenvarchar(100)unique,

productPriceintcheck(productPrice>0),

productSizeintcheck(productSize>0),

productCountintcheck(productCount>=0),

insertintoproductvalues(001,'阿迪达斯',290,39,5);

insertintoproductvalues(002,'耐克',490,40,9);

insertintoproductvalues(003,'李宁',390,42,10);

insertintoproductvalues(004,'鸿星尔克',290,41,20);

insertintoproductvalues(005,'安踏',190,40,14);

insertintoproductvalues(006,'乔丹',290,43,30);

createtablebuy

orderIdintprimarykey,

payMessagevarchar(100)notnull,

expressMessagevarchar(100)notnull,

orderCheckintcheck(orderCheck>0),

productIdintreferencesproduct,

userIdintreferencesClient

insertintobuyvalues(226320,'在线支付','京东快递',1450,001,024);

insertintobuyvalues(226321,'货到付款','圆通快递',4410,002,025);

insertintobuyvalues(226322,'在线支付','申通快递',3900,003,026);

insertintobuyvalues(226323,'货到付款','京东快递',5800,004,027);

insertintobuyvalues(226324,'货到付款','京东快递',5800,005,028);

insertintobuyvalues(226325,'在线支付','申通快递',8700,006,029);

导入后,该数据库中表内数据如下所示。

表Client的记录

图26表product的记录

表buy的记录

8.主要功能实现

1)查询

1.1简单查询

 SQLCode 

*查询useId为024的客户的详细情况*/

select*fromClientwhereuserIdlike'24';

/*查询商品的productId及productName,查询结果按productId降序排列*/

selectproductId,productNamefromproduct

orderbyproductIddesc;

执行结果:

查询1.1的执行结果

 

1.2连接查询

 SQLCode /*等值连接查询*/

SELECTClient.*,buy.*

FROMClient,buy

WHEREClient.userId=buy.userId;

/*外连接查询*/

SELECTClient.userId,userName,phone,addr,email,payMessage,expressMessage

FROMClient,buy

WHEREClient.userId=buy.userId;

/*复合连接查询*/

SELECTClient.userId,Client.userName

FROMClient,buy

WHEREClient.userId=buy.userIdand

buy.orderId='226320'and

buy.orderCheck=1450

代码5查询1.2

执行结果:

查询1.2的执行结果

1.3嵌套查询

 SQLCode 

SELECT*FROMClient

WHEREuserIdIN

(SELECTuserId

FROMbuy

WHEREorderId='226320')

/*不相关查询*/

SELECTuserId

FROMClient

WHEREuserIdIN

(SELECTuserId

FROMbuy

WHEREexpressMessage='京东快递');

查询1.3

执行结果:

查询1.3的执行结果

建立视图:

 SQLCode createviewC_client

ASSELECTuserName,addr,email

FROMClient

WHEREphone='945529'

withcheckoption;

createviewp_product

ASSELECT*

FROMproduct

WHEREproductName='阿迪达斯'

withcheckoption;

视图2.1的建立

2)存储过程

2.1创建一个存储过程,测试商品中是否有阿迪达斯运动鞋及检索指定userId的姓名和所在地址

建立存储过程:

 SQLCode 

/*创建一个存储过程,测试商品中是否有阿迪达斯运动鞋*/

use实训

go

createprocedureTestproduct

as

IFEXISTS(SELECT*

FROMproduct

WHEREproductName='阿迪达斯')

PRINT'商品中有阿迪达斯运动鞋'

ELSE

PRINT'商品中有阿迪达斯运动鞋'

go

execTestproduct;

/*检索指定userId的姓名和所在地址*/

use实训

go

CREATEPROCEDUREproc_userName@userIdchar(11)

AS

IF@userIdisNULL

PRINT'请输入客户userId!

'

ELSE

SELECT'name'=userName,addr

FromClient

WHEREuserId=@userId

execproc_userName'24'

存储过程3.1的建立

运行存储过程:

例:

查询2013年10月1日至今的各图书销售数量。

 SQLCode 

存储过程3.1的运行

运行结果:

存储过程3.1的运行结果

3)触发器

3.1插入订单明细记录时对库存进行判断与操作(张翌)

建立触发器:

 

 SQLCode 

/*建立delete触发器tric_buy,该触发器防止删除订单表buy中的记录

*/

use实训

go

CREATETRIGGERtrig_buyONbuy

afterdelete

AS

Begin

ifexists(select*fromdeletedwhereorderId='226320')

begin

raiserror('对不起,您不能删除该记录',1,1)

rollback

end

End

deletefrombuywhereorderId='226320';

触发器4.1的建立

测试触发器:

4)自定义函数

SQLcode

/*设计一个函数,检索指定客户姓名的userId,useName,addr,email)*/

use实训

go

CREATEFUNCTIONzidingyihanshu

(@namechar(10))

RETURNStable

AS

RETURN

(select*fromClient

WHEREuserName=@name)

declare@xnamechar(10)

set@xname='拉格木呷'

select*fromzidingyihanshu(@xname)

执行结果

三、收获和体会

上了一学期的数据库原理与应用这门课,外加这周的实训,在马老师的带领下学到了许多东西,感觉受益颇多。

通过实验及实训熟练使用了微软sqlserver2005/2008系列数据库管理系统软件,掌握了数据库的应用。

此次实训要求我们设计一个小型商务数据库,刚拿到这个题目的时候还是感觉有些无从下手。

经过多次阅读题目要求与请教老师,从最初的无从下手到有些许思绪,到最后自己会着手调研各大主流商务网站作为自己此次课程设计的材料来源,会把无数的知识点联系起来使用。

这与马老师平时声情并茂地讲解每一节课息息相关,如没有老师平时的付出,自己也很难做到学以致用。

经过研究三大主流网站,我从中抽取客户与商品两个实体作为自己研究的基础。

一步一步画实体的概念模式图、逻辑模式及各实体之间的联系。

最后,把自己分析研究的结果转化为数据表存储在数据库管理系统中。

从建表、查询、建立视图、建立存储过程、触发器、自定义函数等内容的操作,也把课本上的知识跟着过了一遍。

真心觉得自己学到的和锻炼的还是蛮多的,当然了自己也觉得这段时间蛮拼的。

此次课程设计的题目不是很大,不过呢,麻雀虽小五脏俱全。

该有的数据库原理与应用的知识也大体上都包括了,当然也有很多不足之处,觉得还是不够完善。

但是,这是自己亲手做出来的,感觉收获还是蛮大的。

感谢此次实践过程中马老师给予的帮助与指导!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 自然景观

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1