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