图书销售系统的数据库设计.docx
《图书销售系统的数据库设计.docx》由会员分享,可在线阅读,更多相关《图书销售系统的数据库设计.docx(7页珍藏版)》请在冰豆网上搜索。
图书销售系统的数据库设计
图书销售系统的数据库设计
场景:
某图书销售管理公司,随着业务的扩展,需要建立一个图书销售系统来进行图书销售管理活动。
要建立一个图书销售系统,首先要设计其数据库,用来存取和管理图书信息。
以下是按数据库设计的六个步骤,对该图书销售系统所需的数据库进行详细设计。
第一步:
需求分析(次重点)
1.在图书销售管理系统中,经过调查该图书销售管理公司,得到的用户需求如下:
(1)新书信息录入,以添加系统中所销售图书的信息。
(2)新书列表,以方便用户得到新进图书的信息。
(3)书目分类,以便于用户查看对应分类中相关图书信息。
(4)图书搜索功能,以方便用户按书名、ISBN、主题或作者搜索相应图书信息。
(5)用户注册功能,以方便保存用户信息,并在相应功能中快速应用用户信息。
(6)用户登录功能,以方便用户选购图书,并进行结算和配送。
(7)订单管理功能,以方便对图书的销售情况进行统计、分析和配送。
(8)系统管理员登录功能。
2.图书销售管理系统的数据流图设计
根据用户的功能需求,对其使用结构化分析方法(SA方法),进一步对需求进行分析整理,得到该系统的数据流图如下:
3.图书销售管理系统的数据字典
根据数据流图中所涉及的信息,并对信息进行的分析,确定出所有数据项的描述内容,其中主要分数据项名称、类型、长度以及值范围,如下表:
数据项名称
类型
长度
范围
说明备注
书号
字符
50
唯一标识每本图书
根据对数据流图中信息的分析,在数据项描述的基础上确定出所有数据结构的描述,主要有数据结构名称,含义说明和组成
数据结构名称
含义说明
组成
图书
是图书管理系统的主体数据结构,定义了一个图书的有关信息
书号,书名,出版社,作者,单价,库存数量,折扣
根据对数据流图数据流向的分析,确定所有数据流的描述,主要有数据流名称、含义说明、数据流来源、数据流去向
数据流名称
说明
数据流来源
数据流去向
销售信息
某本图书的销售情况
销售
出库
第二步:
概念结构设计(重点)
将数据字典中所涉及的数据项和数据结构抽象为数据库的概念结构,并有E-R图描述出来。
这里采用自底向上的概念结构设计方法,分两步设计:
第一步是抽象数据并设计局部视图,即分E-R图
首先将需求阶段分析的用户的功能,分为几个模块(图书管理模块,订购图书模块,销售图书模块)。
然后针对每个模块具体设计分E—R图,将需求分析阶段得到的数据,利用分类的数据抽象方法将同一类型的数据抽象为实体集,利用聚集的数据抽象方法得到每个实体集的属性,并确定实体集之间的联系(1:
1,1:
n,m:
n)及每个实体集的主码。
(1)订购图书的局部E-R图
(2)管理图书的局部E-R图
(3)销售相关的局部E-R图
第二步集成局部视图,得到全局概论结构,即合并分E-R图,生成总E-R图
生成总E—R图,合并时消除各个分E—R图的冲突和不必要的冗余。
三、逻辑结构设计(重点)
1.在概念结构设计的基础上设计数据库的逻辑结构,把相应的E—R图按一定的转换规则(教材53页有转换规则)转化为关系模式
客户(客户号,客户名,密码,邮箱,地址,电话,身份证)
图书(ISBN号,书名,单价,作者,出版社,分类ID)
分类(分类号,类名)
管理员(员工号,姓名,身份证号)
订单(订单号,客户号,数量,总价,日期,是否送货,送货人,送货地址)
--这个关系模式是由“结账”这个一对多联系合并到多端“订单”实体集转化的
详细订单(客户号,书号,数量)--这个关系模式是由“预购”这个多对多的联系转化的
2.用3NF等方法对每个关系模式进行规范化设计后,如下:
用户(用户号,客户名,密码,邮箱,地址,电话,身份证,权限)
图书(ISBN号,书名,单价,作者,出版社,分类ID,用户号)
分类(分类号,类名)
订单(订单号,数量,总价,日期)
详细订单(客户号,书号,数量,小计价钱)
销售(订单号,用户号,是否送货,送货人,送货地址)
四、物理设计
按相应的关系模型,对数据库进行物理设计,这里主要设计相关的表结构和表间的关系
1.相关的表结构:
(1)用户信息表
列名
数据类型
是否为空
说明
UserID
int
NOTNULL
用户编号,设为主键和标识列
UserName
Varchar(50)
NOTNULL
用户名
Password
Varchar(50)
NOTNULL
密码
Power
tinyint
NOTNULL
权限,默认为0
Email
Varchar(50)
NOTNULL
邮箱,唯一
Tel
Varchar(50)
NULL
电话,唯一
Addr
Varchar(50)
NULL
地址
Number
Varchar(50)
NULL
身份证
(2)图书信息表
列名
数据类型
是否为空
说明
ISBN
Varchar(50)
NOTNULL
ISBN号,设为主键
BookName
Varchar(50)
NOTNULL
书名
UnitPrice
Decimal(4,2)
NOTNULL
单价
Author
Varchar(50)
NULL
作者
Publisher
Varchar(50)
NULL
出版社
CateID
int
NOTNULL
分类号
UserID
int
NULL
管理员号
(3)图书分类表
列名
数据类型
是否为空
说明
CateID
int
NOTNULL
分类号,设为主键、标识列
CateName
Varchar(50)
NOTNULL
类名
(4)订单表
列名
数据类型
是否为空
说明
OrderID
int
NOTNULL
订单号,设为主键、标识列
Quantity
int
NOTNULL
数量
Total
Decimal(4,2)
NOTNULL
总价
OrderDate
datetime
NULL
订单日期
UserID
int
NULL
客户号
(5)详细订单表
列名
数据类型
是否为空
说明
OrderDetailID
int
NOTNULL
详细订单号,和客户号一起设为主键、标识列
UserID
int
NOTNULL
客户号
ISBN
Varchar(50)
NOTNULL
书号
Quantity
int
NULL
数量
Total
Decimal(4,2)
NULL
小计
(6)销售信息表
列名
数据类型
是否为空
说明
ShopID
int
NOTNULL
销售编号,主键、标识列
OrderID
int
NOTNULL
订单号
UserID
int
NOTNULL
用户号
Status
bit
NOTNULL
是否已送货
ShipToName
Varchar(50)
NOTNULL
送货人
ShipToAddr
Varchar(50)
NOTNULL
送货地址
2.各表之间的关系
基本表
相关表
关联字段
是否级联更新和删除
图书分类表
图书信息表
CateID
否
用户信息表
订单表
UserID
否
用户信息表
详细订单表
UserID
否
用户信息表
销售信息表
UserID
否
图书信息表
详细订单表
ISBN
否
订单表
销售信息表
OrderID
否
五、数据库的实施
按物理设计的要求创建数据库,表,并录入数据,并对数据库进行试运行,进行各种操作检测
六、数据库的运行和维护
试运行合格后即可交与客户投入正式运行