第4章-网上书店.doc

上传人:wj 文档编号:492878 上传时间:2023-04-29 格式:DOC 页数:47 大小:4.34MB
下载 相关 举报
第4章-网上书店.doc_第1页
第1页 / 共47页
第4章-网上书店.doc_第2页
第2页 / 共47页
第4章-网上书店.doc_第3页
第3页 / 共47页
第4章-网上书店.doc_第4页
第4页 / 共47页
第4章-网上书店.doc_第5页
第5页 / 共47页
第4章-网上书店.doc_第6页
第6页 / 共47页
第4章-网上书店.doc_第7页
第7页 / 共47页
第4章-网上书店.doc_第8页
第8页 / 共47页
第4章-网上书店.doc_第9页
第9页 / 共47页
第4章-网上书店.doc_第10页
第10页 / 共47页
第4章-网上书店.doc_第11页
第11页 / 共47页
第4章-网上书店.doc_第12页
第12页 / 共47页
第4章-网上书店.doc_第13页
第13页 / 共47页
第4章-网上书店.doc_第14页
第14页 / 共47页
第4章-网上书店.doc_第15页
第15页 / 共47页
第4章-网上书店.doc_第16页
第16页 / 共47页
第4章-网上书店.doc_第17页
第17页 / 共47页
第4章-网上书店.doc_第18页
第18页 / 共47页
第4章-网上书店.doc_第19页
第19页 / 共47页
第4章-网上书店.doc_第20页
第20页 / 共47页
亲,该文档总共47页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

第4章-网上书店.doc

《第4章-网上书店.doc》由会员分享,可在线阅读,更多相关《第4章-网上书店.doc(47页珍藏版)》请在冰点文库上搜索。

第4章-网上书店.doc

第4章网上书店系统

随着信息时代的来临,电子商务的出现给人们的生活带来了巨大的影响,伴随着电子商务的发展,越来越多的用户选择在网上购买图书,网上书店系统应运而生,没有中间商的参与,使网上书店具有物美价廉等特性,同时网上书店还给人们节省了大量的时间,这些实体书店无法比拟的功能使其必将发展成为一种趋势。

本章以一个简单的网上图书销售为例,介绍网上书店系统数据库设计与实现的过程。

4.1需求分析

考察用户网上购书的行为,大致都是如下的模式:

用户进入网上书店,可以浏览各种图书信息,或者根据自己感兴趣的类别、特定图书信息等来进行搜索、查询图书信息。

普通用户可以查询图书,查看图书的详细信息。

普通用户在选定图书后需要购买时,一般需要通过注册个人信息成为会员,本案例规定网上书店系统只允许会员执行购买图书的操作。

会员在需要购买图书时,首先将选定的图书加入到购物车,可以一次购买多本图书,每本图书的数量也可以不同。

对购物车中图书进行确认付款以后,生成正式订单,管理员可以根据会员购买生成的订单,为其进行发货处理。

管理员还可以对网上书店的图书进行增加、删除、更新等管理操作。

对于网上书店系统中普通用户、会员和管理员的具体功能描述如下:

普通用户:

(1)浏览图书、按类别查询图书、查看图书详细信息;

(2)注册成为会员;

会员:

(1)浏览图书、按类别查询图书、查看图书详细信息;

(2)加入购物车、修改购物车、订购图书、生成订单、查看订单等;

(3)查看、修改个人信息;

管理员:

(1)浏览图书、按类别查询图书、查看图书详细信息;

(2)查看订单、处理订单进行发货处理等;

(3)查看、修改个人信息;

(4)更新图书信息,如增加、删除图书、更新库存量、商品名称、增加图书的属性列等。

从上述的功能分析可以得出,网上书店系统中需要有会员、图书、订单等信息。

对于会员,需要有会员的账号、密码、姓名、邮箱、电话、地址等属性;对于图书,需要有书名、图书类别、出版社、作者、图书概况、定价、折扣、库存数量等属性,其中图书可以有折扣(如8折、7.5折等),实际售价由定价乘以折扣,再除以10计算得出的;对于一个订单,需记录会员的订购日期、管理员进行发货的发货日期、订单总价等属性,其中订单总价是由多种图书的实际售价乘以订购数量累计计算得出的。

网上书店系统中的图书的销售基本规定如下:

每个会员可以通过订购图书生成多个订单,每个订单仅属于一个会员;每个订单中可以包含多种图书商品,每种图书商品可以出现在多个订单中;在订单信息中,每种图书都有对应的订购数量。

为简便起见,网上书店系统仅考虑会员、订单、图书之间的关系,至于实际的网店的网上支付、商品评论等信息的处理,暂时略去,也不考虑普通用户,假设会员确认生成了订单以后,就是已经付款的,管理员就可以对其进行发货处理等。

4.2概念模型设计

概念模型设计主要通过分析网上书店系统的基本需求,对需求分析结果中的信息进行分类、组织,得到系统的实体、实体的属性、实体的码、实体之间的联系以及联系的类型,从而可以设计出系统的概念模型。

设计概念结构的具体步骤如下:

1.抽象出系统的实体

根据分析,网上书店系统的基本的实体集为:

会员、订单、图书,而每个实体应该具有如下所列的基本属性,并标记主键(加下划线的属性),画出E-R图,如图4-1、图4-2、图4-3所示,其中,账号是会员的主键,订单号是订单的主键,国际标准图书号ISBN是图书的主键。

会员:

账号、密码、姓名、地址、邮箱、手机、管理员标识,其中账号是主键,管理员标识为0表示为普通会员,为1表示为管理员;

订单:

订单号、订购日期、订购总价、发货日期,其中订单号是主键;

图书:

ISBN、书名、作者、出版社、定价、折扣、图书类别、图书概况、库存数量,其中ISBN是主键。

图4-1会员实体

图4-2订单实体

图4-3图书实体

2.设计分E-R图

在网上书店系统中,涉及到三个实体集分别是会员、订单、图书,这三个实体集之间存在联系。

会员通过订购图书生成一个订单,一个会员可以生成多个订单,每个订单只能属于一个会员,即会员与订单之间的联系是一对多的联系。

一个订单可以包含多种图书,一种图书也可以被多个订单包含,即每一种图书可以出现在多个订单中,每个订单中对应的每种图书均有对应的订购数量,因此,订单与图书之间的联系是多对多的联系。

由以上分析,将会员与订单之间的联系命名为订购联系,将订单与图书之间的联系命名为订单详情,得到各个局部的E-R图。

如图4-4、图4-5所示。

图4-4会员与订单之间的E-R图

图4-5订单与图书之间的E-R图

3.合并分E-R图,生成初步E-R图

经过分析,得到会员、订单和图书三者之间分别通过订购和订单详情这两个联系进行关联。

因此,合并上述分E-R图、生成初步E-R图,如图4-6所示。

图4-6网上书店系统初步E-R图

4.生成全局E-R图

将各个实体的属性加入到初步E-R图当中,形成全局E-R图,如图4-7所示。

图4-7网上书店系统总体E-R图

4.3逻辑模型设计

在概念模型设计阶段得到E-R图之后,下一步是进行数据库的逻辑模型设计,根据转换规则将E-R图转换为关系模型,即将实体和联系转换为关系数据库的基本表,并标识各个表的主键。

根据第1章介绍的转换规则,得到网上书店系统的关系模式如下:

会员(账号,密码,姓名,地址,邮箱,手机号码,管理员标识)为会员实体对应的关系模式,其中账号是会员关系的主键。

订单(订单号,订购日期,订购总价,发货日期,账号)为订单实体和订购联系合并的关系模式,其中订单号是主键。

会员的主键账号是订单关系的外部码。

图书(ISBN,书名,作者,出版社,定价,图书类别,图书概况,折扣,库存数量)为图书实体对应的关系模式,其中ISBN是图书实体的主键。

订单详情(订单号,ISBN,订购数量)为“订单详情”联系对应的关系模式。

因为订单详情是订单与图书之间的多对多联系,因此订单、图书的主属性以及订单详情联系本身的属性“订购数量”,共同构成了订单详情关系模式的属性,其中(订单号,ISBN)的组合是主键,订单号、ISBN分别是订单详情关系模式的外部码。

4.4数据库物理设计与实施

在建立数据库的过程中,首先根据应用情况进行分析、测算来确定数据库的大小、存储路径、增长速度等,创建数据库,再在数据库当中创建对应的基本表、视图、索引等,下面分别介绍。

4.4.1建立“网上书店系统”数据库

因为本系统是一个小型的网上书店系统,经过分析,建立数据库“网上书店系统”,其初始大小可以设为100MB,增长率设置为10%即可满足需要,并将数据文件和日志文件分别命名为:

“网上书店系统_data”和“网上书店系统_log”,其存储路径选择为“D:

\data”文件夹下,下面为网上书店系统建立数据库。

建立数据库有两种方式:

利用SQLServer2008的ManagementStudio图形工具交互向导方式和SQL语句方式。

1.交互向导方式

利用SQLServer2008中的ManagementStudio图形工具向导建立数据库步骤如下:

(1)启动SQLServer2008

依次单击“开始”→“所有程序”→“SQLServer2008”→“SQLServer2008ManagementStudioExpress”,启动SQLServer2008数据库管理系统。

(2)连接数据库服务器

点击“连接到服务器”对话框中的连接按钮连接到SQLServer2008数据库服务器。

(3)创建数据库“网上书店系统”

在SQLServer2008数据库管理系统的左边栏“对象资源管理器”中,右击数据库对象,在弹出的快捷菜单中,单击“新建数据库”命令。

(4)在弹出的“新建数据库”对话框中输入数据库名称“网上书店系统”,数据库的初始大小中输入100MB,增长方式设置为为按10%的增长率进行增长,存储路径修改为“D:

\data”,然后单击“确定”按钮。

(5)在左侧的对象资源管理器中,右击“数据库”,在弹出的快捷菜单中单击“刷新”按钮,可以看到新建的数据库“网上书店系统”,如图4-8所示。

图4-8新建的“网上书店系统”数据库

2.使用SQL语言建立数据库

使用SQL语言的CREATEDATABASE语句建立数据库步骤如下:

启动SQLServer2008并连接到服务器→点击“新建查询”→在新建查询窗口中,输入建立“网上书店系统”数据库的SQL语句。

建立数据库SQL语句描述如下:

CREATEDATABASE网上书店系统--创建数据库

ONPRIMARY

(NAME='网上书店系统_data',--主数据文件的逻辑名

FILENAME='D:

\data\网上书店系统.mdf',--主数据文件的物理名

SIZE=100MB,--初始大小

FILEGROWTH=10%--增长率)

logON

(NAME='网上书店系统_log',--日志文件的逻辑名

FILENAME='D:

\data\网上书店系统.ldf',--日志文件的物理名

SIZE=1MB,

MAXSIZE=200MB,

FILEGROWTH=10%)

如图4-9所示,点击按钮“”→在消息窗口会提示“命令已成功完成”,证明数据库已经成功建立→右击数据库→单击“刷新”按钮→可以看到如图4-8所示的新建的“网上书店系统”数据库。

图4-9使用SQL语句建立“网上书店系统”数据库

4.4.2建立和管理基本表

1.建立基本表

经过前面分析,需要为“网上书店系统”数据库建立会员、订单、图书和订单详情四张基本表。

建立数据表同样有两种方法:

一种是利用SQLServer2008的ManagementStudio图形工具建表;一种是利用SQL语句在查询分析器中建表。

下面举例说明。

(1)建立“会员”表

在逻辑模型建立的时候,已经得到会员基本表模式如下:

会员(账号,密码,姓名,地址,邮箱,手机,管理员标识),其中各个属性列的名称以及数据类型参见表4-1,根据表中所列出的信息建立会员表。

表4-1会员表的属性信息

属性

数据类型

是否为空/约束条件

账号

CHAR(20)

主键

密码

CHAR(20)

姓名

CHAR(10)

地址

VARCHAR(50)

邮箱

VARCHAR(30)

可以为空

手机

CHAR(11)

管理员标识

INT

0或1

其中账号是主键,除邮箱外所有的属性均不允许为空。

使用SQLServer2008的ManagementStudio图形工具建立“会员”表步骤如下:

1)建立表

打开SQLServer2008→在对象资源管理器中,点击“网上书店系统”数据库图标前的“+”展开→选中“表”,右击→在快捷菜单中单击“新建表”,如图4-10所示;

图4-10使用对象资源管理器“新建表”

在打开的创建表的窗口中,按照表4-1的要求进行建表,如图4-11所示;

图4-11设置会员表基本属性列

将“账号”属性在设置为主键,方法为:

右击“账号”这一列→点击“设置主键”→设置成功后,“账号”属性列左边出现表示设置成功,如图4-12所示。

图4-12设置会员表的主键

管理员标识约束条件为取值只能为0或1,需要为“管理员标识”属性列设置约束条件,要求只能输入“0”,“1”两种属性值。

设置约束条件的方法为选中“管理员标识”列→右击“CHECK约束”→在弹出的对话框中,将“标识”名称改为“CK_会员_管理员标识”,如图4-13所示。

图4-13设置会员表CHECK约束名称

在此对话框中点击“常规”标签页→点击“表达式”后面的空白处后面的小按钮“”,弹出“CHECK约束表达式”对话框→在对话框中输入约束条件“管理员标识='0'OR管理员标识='1'”,如图4-14所示→点击“确定”按钮→点击“关闭”按钮即可。

图4-14设置会员表CHECK约束表达式

2)保存表

单击工具栏上的“保存”按钮→在弹出来的对话框中,输入表名“会员”→点击“确定”按钮即可。

3)右击对象资源管理器中的“网上书店系统”中的“表”→点击“刷新”按钮,即可看到新建立的“会员”表,如图4-15所示。

图4-15新建的“会员”表

也可以利用SQL语句建立会员表,具体的步骤参见下面订单表的建立过程。

下面附上建立会员表的SQL语句。

创建会员基本表的SQL语句,如图4-16所示:

CREATETABLE会员

(账号CHAR(20)PRIMARYKEY,

密码CHAR(20)NOTNULL,

姓名CHAR(10)NOTNULL,

地址VARCHAR(50)NOTNULL,

邮箱VARCHAR(30),

手机CHAR(11)NOTNULL,

管理员标识INTNOTNULLCHECK(管理员标识IN('0','1')))

图4-16使用CREATETABLE语句建立“会员”表

(2)建立“订单”表

在逻辑模型建立的时候,已经得到“订单”表的模式如下:

订单(订单号,订购日期,订购总价,发货日期,账号),其中各个属性列的名称以及数据类型参见表4-2,根据表中所列出的信息建立订单表。

表4-2订单基本表的属性信息

属性列

数据类型

是否为空/约束条件

订单号

CHAR(10)

主键

订购日期

DATETIME

订购总价

MONEY

可以为空,非空时>=0

发货日期

DATETIME

可以为空

账号

CHAR(20)

下面利用SQL语句在查询分析器中建立“订单”表,步骤如下:

1)单击工具栏中的“新建查询”按钮;

2)在新建查询窗口中输入创建表的SQL代码,建立“订单”表,其中创建“订单”表的SQL语句如下:

CREATETABLE订单

(订单号CHAR(10)PRIMARYKEY,

订购日期DATETIMENOTNULL,

订购总价MONEYCHECK(订购总价>=0),

发货日期DATETIME,

账号VARCHAR(20)NOTNULL)

3)如图4-17所示,单击工具栏中的“”按钮,运行SQL语句,完成“订单”表的创建工作。

在左侧的“对象资源管理器”中,“刷新”即可看到新建的“订单”表。

图4-17使用CREATETABLE语句建立“订单”表

对于其余的两张表的建立参照“会员”表和“订单”表的建立方式分别进行创建,这里不再一一赘述。

下面附上其余两张表的属性信息列表以及建立表的SQL语句。

(3)建立“图书”表

在逻辑模型建立的时候,已经得到图书基本表的属性信息,如表4-3所示。

表4-3图书基本表的属性信息

属性列

数据类型

是否为空/约束条件

ISBN

CHAR(20)

主键

书名

VARCHAR(50)

作者

CHAR(30)

可以为空

出版社

CHAR(30)

可以为空

定价

MONEY

否,>=0

折扣

FLOAT

否,0-10

图书类别

CHAR(20)

图书概况

VARCHAR(100)

可以为空

库存数量

INT

否,>=0

创建图书基本表的SQL语句,如图4-18所示:

CREATETABLE图书

(ISBNCHAR(20)PRIMARYKEY,

书名VARCHAR(50)NOTNULL,

作者CHAR(30),

出版社CHAR(30),

定价MONEYNOTNULLCHECK(定价>=0),

折扣FLOATNOTNULLCHECK(0<=折扣and折扣<=10),

图书类别CHAR(20)NOTNULL,

图书概况VARCHAR(100),

库存数量INTNOTNULLCHECK(库存数量>=0))

图4-18使用CREATETABLE语句建立“图书”表

(4)建立“订单详情”表

在逻辑模型建立的时候,已经得到订单详情基本表的属性信息,如表4-4所示,其中(订单号、ISBN)的组合是主键,订单号、ISBN是外键,分别参照订单表、图书表的主键。

表4-4订单详情基本表的属性信息

属性列

数据类型

是否为空/约束条件

订单号

CHAR(10)

否,主属性

ISBN

CHAR(20)

否,主属性

订购数量

INT

否,>=0

创建订单详情基本表的SQL语句,如图4-19所示:

CREATETABLE订单详情

(订单号CHAR(10)NOTNULL,

ISBNCHAR(20)NOTNULL,

订购数量INTNOTNULLCHECK(订购数量>=0)

CONSTRAINTPK_订单详情PRIMARYKEY(订单号,ISBN),

FOREIGNKEY(订单号)REFERENCES订单(订单号),

FOREIGNKEY(ISBN)REFERENCES图书(ISBN))

图4-19使用CREATETABLE语句建立“订单详情”表

需要注意的是:

在建立“订单详情”表的时候,为“订单详情”表的字段“订单号”和国际标准图书号“ISBN”加上外部码约束。

订单详情表的这两个字段信息是分别来源于订单表和图书表的字段,在没有订单表中的“订单号”、图书表中的“ISBN”的信息时,向订单详情表中增加数据是不符合逻辑的,违反了数据的参照完整性约束条件。

在CREATETABLE语句中可以利用子句[CONSTRAINT<约束名>]FOREIGNKEY<列名>REFERENCES<被参照表明.><列名>定义外部码约束,其中“[…]”中间的部分是对约束进行命名。

2.管理基本表

随着应用环境和应用需求的改变,有时需要修改已经建立好的基本表的结构。

SQL语言采用ALTERTABLE语句修改基本表的结构,利用DROP语句删除基本表。

ALTERTABLE命令可以修改基本表的名称、增加新列、增加新的完整性约束条件、修改原有列的定义包括修改列名和数据类型等,其中DROP子句用于删除指定的完整性约束条件。

当然,也可以在SQLServer2008的ManagementStudio图形工具中交互式地修改基本表的结构。

注意:

当数据库投入运行之后,基本表结构的修改是需要小心慎重的,不能经常进行,以免造成数据库数据丢失。

实际应用系统中管理数据库的工作都必须是经过授权的数据库管理员才能进行。

下面以“图书”表为例,进行一些基本表的管理操作。

【例4-1】向“图书”表中增加“页数”列,其数据类型是整数型

解析:

增加表的一个属性列,可以使用ALTERTABLE…ADD语句。

SQL语句:

ALTERTABLE图书ADD页数INTNOTNULL

当然,也可以利用ManagementStudio图形工具交互式地向图书表中增加“页数”列,具体的操作步骤如下:

(1)打开SQLServer2008→在对象资源管理器中,点击“网上书店系统”数据库的“+”展开→选中“图书”表→右击“修改”,如图4-20所示。

图4-20修改“图书”表结构界面

(2)在最后一行对应的列名输入“页数”→数据类型选择“int”→不允许为空,即去掉允许空的“勾号”,如图4-21所示。

图4-21图书表中增加“页数”属性列

(3)点击上方的“保存”按钮,即可完成向“图书”表中增加“页数”列的操作。

【例4-2】将“图书”表中的“页数”的数据类型改为短整型

解析:

修改属性列的数据类型,可以使用ALTERTABLE…ALTERCOLUMN语句。

SQL语句:

ALTERTABLE图书ALTERCOLUMN页数TINYINT

同样,也可以利用交互式的方法修改“图书”表中的“页数”的数据类型。

具体操作步骤如下:

(1)打开SQLServer2008→在对象资源管理器中,点击“网上书店系统”数据库的“+”展开→选中“图书”表→右击“修改”。

(2)找到对应列名“页数”的这一行→将“页数”字段的数据类型从下拉列表中选择“tinyint”,如图4-22所示。

图4-22修改图书表中“页数”的数据类型

(3)点击上方的“保存”按钮,即可完成将“图书”表中“页数”列的字段类型修改为TINYINT的操作。

【例4-3】增加“图书”表中“页数”必须取大于0的约束条件

解析:

增加属性列的约束条件,可以使用ALTERTABLE…ADDCHECK语句。

SQL语句:

ALTERTABLE图书ADDCHECK(页数>0)

同样,也可以利用交互式的方法对“图书”表中的“页数”的增加约束条件。

具体步骤如下:

(1)打开SQLServer2008→在对象资源管理器中,点击“网上书店系统”数据库的“+”展开→选中“图书”表→右击“修改”。

(2)在打开的图书表中,右击“页数”列名,选择“CHECK约束”,如图4-23所示。

图4-23设置图书表“页数”列的“CHECK约束”

(3)在打开的对话框中,点击左方的“添加”按钮→添加新的CHECK约束,在“常规”标签页下方,点击“表达式”后面的“”→在弹出的窗口中输入中“页数>0”,如图4-24所示。

图4-24为图书表中的“页数”创建CHECK约束

(4)单击“确定”按钮,点击“关闭”按钮即完成CHECK约束的创建。

此时向“图书”表的页数列输入数据时,如果不是“>0”,将会出现错误的提示信息,数据无法输入,表明CHECK约束创建成功。

由于篇幅有限,下面的例子中对于交互式管理基本表就不再一一赘述了。

【例4-4】删除“图书”表中的“页数”列

解析:

删除某一属性列时,可以使用ALTERTABLE…DROPCOLUMN语句。

SQL语句:

ALTERTABLE图书DROPCOLUMN页数

【例4-5】删除“图书”表。

解析:

当不再需要某个表时,可以使用DROPTABLE语句进行删除。

SQL语句:

DROPTABLE图书CASCADE

其中CASCADE表示级联删除,在添加表的关系约束的时候注意添加“ONDELETE CASCADE”,则在删除表的同时,相关的依赖对象比如视图等,都将一起被删除。

执行该语句将删除数据库中“图书”基本表的定义。

注意:

数据库运行时,不能随便删除表。

表的删除在这里仅作为一个例子来说明,删除表的操作一定要慎用。

4.4.3建立和管理视图

视图是通过基本表和其他视图创建出来的表,创建一个视图后,数据字典中只存放视图的定义,并不存储视图对应的数据,数据依然存放在对应的表中,因此,视图又称为“虚表”。

假设在网上书店系统中已经导入数据,导入的数据内容参看4.5节,要从图书表中找出有哪些图书类别,SQL语句如下:

SELECTDISTINCT图书类别

FROM图书

其中,DISTINCT的作用是去除重复列,返回唯一值。

从返回值可以得出,网上书店系统中有五个图书类别,分别为“文

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2