《网上书店数据库设计实例》由会员分享,可在线阅读,更多相关《网上书店数据库设计实例(75页珍藏版)》请在金锄头文库上搜索。
1、1第第6 6章章 关系数据库设计实例关系数据库设计实例数据库系统原理与设计数据库系统原理与设计 ( 第第 2 版版 )2目目 录录确定联系集及确定联系集及E-R图图 6.5需求描述和系统边界需求描述和系统边界 6.1需求分析需求分析 6.2确定实体集及属性确定实体集及属性 6.4检查是否满足需求检查是否满足需求 6.6逻辑数据库设计逻辑数据库设计 6.7模式求精模式求精6.8主要业务的概念建模分析主要业务的概念建模分析 6.33基于基于B2C的网上书店系统需求描述的网上书店系统需求描述 n该系统支持该系统支持4类用户:类用户:游客游客、会员会员、职员职员(书店工作书店工作人员人员)和和系统管理
2、员系统管理员。n游客游客可以随意浏览图书及网站信息,但只有在注册可以随意浏览图书及网站信息,但只有在注册为网站会员后才能在线购书。游客注册成功后即为为网站会员后才能在线购书。游客注册成功后即为普通会员,当其普通会员,当其购书金额达到一定数量时可升级为购书金额达到一定数量时可升级为不同等级的不同等级的VIP会员会员,以享受相应的优惠折扣。,以享受相应的优惠折扣。n会员会员登录系统后,可通过不同方式登录系统后,可通过不同方式(如书名、作者、如书名、作者、出版社等出版社等)搜索图书信息、网上订书、在线支付、订单搜索图书信息、网上订书、在线支付、订单查询与修改查询与修改,发布留言发布留言等。等。4基于
3、基于B2CB2C的网上书店系统需求描述的网上书店系统需求描述 n书店工作人员书店工作人员以职员身份注册登录后,可以职员身份注册登录后,可维护与发布图书维护与发布图书信息、审核订单、安排图书配送、办理收款、处理退货信息、审核订单、安排图书配送、办理收款、处理退货,并进行并进行图书采购、库存管理、会员管理、留言回复图书采购、库存管理、会员管理、留言回复等。等。n系统管理员系统管理员的主要职责是的主要职责是维护已注册维护已注册会员会员、职员职员信息信息。n请为该网上书店设计数据库请为该网上书店设计数据库E-R图和关系模式。要求保存图和关系模式。要求保存所需全部信息,并高效地支持上述各种应用。所需全部
4、信息,并高效地支持上述各种应用。n由于网上书店功能比较复杂,由于网上书店功能比较复杂,本设计不考虑本设计不考虑网上支付网上支付和和退退货货等等功能功能 。 确定系统边界确定系统边界5目目 录录确定联系集及确定联系集及E-R图图 6.5需求描述和系统边界需求描述和系统边界 6.1需求分析需求分析 6.2确定实体集及属性确定实体集及属性 6.4检查是否满足需求检查是否满足需求 6.6逻辑数据库设计逻辑数据库设计 6.7模式求精模式求精6.8主要业务的概念建模分析主要业务的概念建模分析 6.36业务需求及处理流程业务需求及处理流程 n业务需求分析业务需求分析是是根据现实世界对象需求,描述应用根据现实
5、世界对象需求,描述应用的具体的具体业务处理流程业务处理流程,并分析哪些业务是计算机可,并分析哪些业务是计算机可以完成的,而哪些业务是不能由计算机完成的以完成的,而哪些业务是不能由计算机完成的。n网上书店网上书店主要业务主要业务包括:包括:图书信息发布与查询图书信息发布与查询、订订购图书购图书、处理订单处理订单,并通知配送公司进行并通知配送公司进行图书配送图书配送等。本节只给出网上书店的核心业务等。本节只给出网上书店的核心业务“订单生成订单生成”及及“订单受理订单受理”处理流程。处理流程。 n常见的网上书店一般包括哪些业务功能?常见的网上书店一般包括哪些业务功能?7会员登录会员登录选择图书选择图
6、书放入购物车放入购物车填写配送信息填写配送信息选择支付方式选择支付方式订单生成订单生成财务结算财务结算选购结束选购结束?在线支付在线支付? YN开始开始结束结束N Y(a) 订单生成订单生成图图6.1 网上书店的网上书店的 主要业务流程主要业务流程 N职员登录职员登录生成配送单生成配送单订单审核订单审核生成发票生成发票开始开始Y结束结束正确正确?N退回订单退回订单(b) 订单受理订单受理有订单有订单? Y有库存有库存? Y通知进货通知进货 N8功能需求及数据需求分析功能需求及数据需求分析 n注册管理注册管理l会员注册会员注册。会员会员注册时要求填写会员基本信息,包括注册时要求填写会员基本信息,
7、包括姓名、登录密码、性别、出生日期、电话、地址、邮姓名、登录密码、性别、出生日期、电话、地址、邮政编码、电子邮箱、单位政编码、电子邮箱、单位等信息。系统检查所有信息等信息。系统检查所有信息填写正确后提示会员注册成功,并返回填写正确后提示会员注册成功,并返回会员编号会员编号。l职员注册职员注册。职员职员注册时要填写基本信息,包括注册时要填写基本信息,包括姓名、姓名、登录密码、性别、出生日期、部门、薪水、住址、电登录密码、性别、出生日期、部门、薪水、住址、电话、电子邮箱话、电子邮箱等信息。系统检查所有信息填写正确后等信息。系统检查所有信息填写正确后提示注册成功,并返回提示注册成功,并返回职员编号职
8、员编号。9功能需求及数据需求分析功能需求及数据需求分析 n图书管理图书管理l图书信息维护图书信息维护。图书图书:ISBN、书名、作者、版次、类别、书名、作者、版次、类别、出版社、出版年份、库存数量、定价、图书折扣、内容简出版社、出版年份、库存数量、定价、图书折扣、内容简介、目录介、目录等信息。等信息。l图书采购图书采购。当库存数量不足或出版社出版新书,书店职员。当库存数量不足或出版社出版新书,书店职员负责图书采购。负责图书采购。采购单采购单:采购单号、出版社、采购日期、采购单号、出版社、采购日期、采购人、采购人、采购明细采购明细(ISBN、书名、采购数量、单价、书名、采购数量、单价)等。等。l
9、图书入库图书入库。当订购的图书到货后办理图书入库,并增加新。当订购的图书到货后办理图书入库,并增加新图书信息、更新图书库存数量。图书信息、更新图书库存数量。入库单入库单:入库单号、出版入库单号、出版社、入库日期、入库人、收货人、社、入库日期、入库人、收货人、入库明细入库明细(ISBN、书名、书名、入库数量入库数量)等。等。l图书发布图书发布。书店职员负责及时在网上发布新书信息、图书。书店职员负责及时在网上发布新书信息、图书推荐信息、促销信息等,并及时更新、删除旧信息。推荐信息、促销信息等,并及时更新、删除旧信息。 10功能需求及数据需求分析功能需求及数据需求分析n在线订书在线订书l会员登录后,
10、选购图书放入会员登录后,选购图书放入购物车购物车中,并填写中,并填写购买数量购买数量。购物。购物车中的图书可增加、删除和修改,并自动统计车中的图书可增加、删除和修改,并自动统计图书总价格图书总价格。l选书完成后,会员填写选书完成后,会员填写配送信息配送信息、发票单位及选择支付方式。、发票单位及选择支付方式。配送信息默认为会员注册时填写的基本信息,也可重新填写。配送信息默认为会员注册时填写的基本信息,也可重新填写。l确认所填信息后,提交生成确认所填信息后,提交生成订单订单。每张订单记录:。每张订单记录:订单号、订订单号、订购日期、应收总金额、会员折扣、实收总金额、付款方式、订购日期、应收总金额、
11、会员折扣、实收总金额、付款方式、订单状态、单状态、订单明细订单明细(ISBN、书名、订购数量、定价、应收金额、书名、订购数量、定价、应收金额、图书折扣、实收金额、配送状态图书折扣、实收金额、配送状态)和和发票信息发票信息(如如发票单位发票单位等等)。l如果选择在线支付方式,则还需进行网上结算。若余额不足,如果选择在线支付方式,则还需进行网上结算。若余额不足,则取消订单(则取消订单(本设计不作考虑本设计不作考虑)。)。11功能需求及数据需求分析功能需求及数据需求分析n配送管理配送管理l假设一张订单所订购的图书假设一张订单所订购的图书可拆分成不同的配送单发货可拆分成不同的配送单发货,但一个配送单但
12、一个配送单不能包含不同订单的图书不能包含不同订单的图书。l会员在生成订单之后需要进一步进行会员在生成订单之后需要进一步进行配送设置配送设置,包括填写,包括填写配送信息配送信息(收货人、送货地址、邮政编码、联系电话收货人、送货地址、邮政编码、联系电话等等) ,定义定义配送明细配送明细(ISBN、书名、配送数量书名、配送数量等等) 。l同时还需要选择:如果一个配送单中的所有图书不是同时同时还需要选择:如果一个配送单中的所有图书不是同时有货,有货,是否需要自动拆送是否需要自动拆送。l每张每张配送单配送单要求记录:要求记录:配送单号、配送日期、是否拆送、配送单号、配送日期、是否拆送、发票编号、配送状态
13、、发票编号、配送状态、配送信息配送信息和和配送明细配送明细。l配送状态配送状态用于记录该配送单的当前配送状态用于记录该配送单的当前配送状态:未发货未发货、已已发货发货、已送到已送到等。等。12功能需求及数据需求分析功能需求及数据需求分析n订单管理订单管理l订单查询订单查询。订单提交后,会员可查询。订单提交后,会员可查询订单状态订单状态:未审核、未审核、退回、已审核、已部分配送、已全部配送、已处理结束退回、已审核、已部分配送、已全部配送、已处理结束。l订单更新订单更新。订单未审核前,允许会员修改、取消订单。订单未审核前,允许会员修改、取消订单。l订单受理订单受理。订单生成后,职员对订单进行审核。
14、如发现订。订单生成后,职员对订单进行审核。如发现订单及配送单信息填写不正确,则单及配送单信息填写不正确,则退回退回客户重新填写。客户重新填写。如果通过审核,则如果通过审核,则检查检查所订购图书是否有库存所订购图书是否有库存。如一个如一个配送单配送单中所购图书均库存,则生成该配送单的发票,中所购图书均库存,则生成该配送单的发票,更新库存数量,安排配送。更新库存数量,安排配送。 如一个如一个配送单配送单中的部分图书库存不足中的部分图书库存不足(通知尽快进货通知尽快进货),且,且会会员员选择选择是否拆送是否拆送为为“Y”,则系统自动对该,则系统自动对该配送单配送单进行进行拆分拆分配送配送(先配送有库
15、存的图书先配送有库存的图书),生成拆分的配送单及发票,更,生成拆分的配送单及发票,更新库存数量,安排配送。新库存数量,安排配送。 13功能需求及数据需求分析功能需求及数据需求分析n出版社管理出版社管理l网上书店直接从出版社采购图书。要求保存和维护网上书店直接从出版社采购图书。要求保存和维护出出版社版社信息:信息:出版社编号、出版社名称、出版社地址、出版社编号、出版社名称、出版社地址、邮政编码、联系人、电话、传真、电子邮箱邮政编码、联系人、电话、传真、电子邮箱等。等。n配送公司管理配送公司管理l网上书店通过配送公司将图书送到会员手中。要求保网上书店通过配送公司将图书送到会员手中。要求保存和维护存
16、和维护配送公司配送公司信息:信息:公司编号、公司名称、公司公司编号、公司名称、公司地址、邮政编码、联系人、电话、传真、电子邮箱地址、邮政编码、联系人、电话、传真、电子邮箱等等14功能需求及数据需求分析功能需求及数据需求分析n留言管理留言管理l发布留言发布留言。会员可在网站发表留言或评论。会员可在网站发表留言或评论。留言留言需记录:需记录:留言人、留言内容、发布时间留言人、留言内容、发布时间等。等。l回复留言回复留言。书店职员可回复留言,并记录:书店职员可回复留言,并记录:回复人、回复回复人、回复时间、回复内容时间、回复内容等。等。n用户管理用户管理l会员升级会员升级。系统可对会员进行分级,即当
17、会员订书总金额系统可对会员进行分级,即当会员订书总金额到达一定数额后成为不同级别的用户,以享受相应的优惠到达一定数额后成为不同级别的用户,以享受相应的优惠折扣。折扣。l会员信息维护会员信息维护。系统管理员及会员可修改、删除和更新会系统管理员及会员可修改、删除和更新会员信息。员信息。l职员信息维护职员信息维护。系统管理员及职员可修改、删除和更新职系统管理员及职员可修改、删除和更新职员信息。员信息。15业务规则分析业务规则分析 n业务规则分析业务规则分析主要是主要是分析分析数据之间的约束数据之间的约束以及以及数据库约束数据库约束。n网上书店业务规则如下:网上书店业务规则如下:l游客均可搜索图书信息
18、,但游客均可搜索图书信息,但只有只有注册会员注册会员才能提交订单才能提交订单;只只有有注册职员注册职员才能维护图书信息及受理订单才能维护图书信息及受理订单。l会员编号会员编号唯一标识唯一标识会员会员,会员编号会员编号由系统按时间顺序生成。由系统按时间顺序生成。l职员编号职员编号唯一标识唯一标识职员职员,职员编号职员编号由系统按时间顺序生成。由系统按时间顺序生成。l会员等级分类:会员等级分类:购书总额购书总额达到达到 10000元,元,三级三级VIP会员会员,享受售价,享受售价 9.5 折优惠;折优惠;购书总额购书总额达到达到 20000元,元,二级二级VIP会员会员,享受售价,享受售价 9 折
19、优惠;折优惠;购书总额购书总额达到达到 30000元,元,一级一级VIP客户客户,享受售价,享受售价 8.5 折优惠。折优惠。16业务规则分析业务规则分析lISBN唯一标识一种唯一标识一种图书图书。系统记录每种图书的当前。系统记录每种图书的当前库存数量库存数量,当某图书的当某图书的库存数量库存数量低于某一阈值时,则通知该图书补货。低于某一阈值时,则通知该图书补货。l选购的图书选购的图书必须放入必须放入购物车购物车后才能生成订单后才能生成订单。l订单受理前允许会员删除所选图书,修改购书数量、配送信息订单受理前允许会员删除所选图书,修改购书数量、配送信息和发票单位,甚至取消订单。但是和发票单位,甚
20、至取消订单。但是订单审核通过后,则不允许订单审核通过后,则不允许再做任何修改。再做任何修改。l订单编号订单编号唯一标识唯一标识订单订单。订单编号订单编号由系统按时间顺序生成。由系统按时间顺序生成。l同一订单可订购多种图书,且同一订单可订购多种图书,且订购数量订购数量可以不同可以不同。因此,一张。因此,一张订单订单的的订单明细订单明细包括:包括:ISBN、图书名称、订购数量、定价、应、图书名称、订购数量、定价、应收金额、图书折扣、实收金额、配送状态收金额、图书折扣、实收金额、配送状态。l每种图书的每种图书的实收金额实收金额=订购数量订购数量*定价定价*图书折扣图书折扣*会员折扣会员折扣。17业务
21、规则分析业务规则分析l每个每个订单订单可分多个可分多个配送单配送单进行配送,进行配送,配送单配送单的的配送明细配送明细信息由信息由会员设置。会员设置。配送单编号配送单编号唯一标识唯一标识配送单配送单。每个每个订单订单的的配送单编配送单编号号由由订单编号订单编号加上系统按时间顺序生成的加上系统按时间顺序生成的配送单流水号配送单流水号组成组成。l假设一张假设一张订单订单的每一个的每一个配送单配送单对应开一张对应开一张发票发票,但一张,但一张订单订单的的所有所有发票发票的的发票单位发票单位都相同。都相同。发票发票用用发票编号发票编号唯一标识。唯一标识。 l配送单配送单中的中的图书图书采取采取先到先发
22、货先到先发货原则进行配送。原则进行配送。若一个若一个配送单配送单中的中的图书图书未同时有货,且未同时有货,且会员会员选择可以拆送选择可以拆送,则系统会自动则系统会自动拆拆分成不同分成不同配送单配送单发货发货;但是,一个;但是,一个配送单配送单中的某种中的某种图书图书只有库只有库存足够时才能安排配送。存足够时才能安排配送。l一个一个配送单配送单只能由一个只能由一个配送公司配送公司进行配送进行配送(不同配送单可以由不同配送单可以由不同配送公司配送不同配送公司配送);一个配送公司可以承接多次配送业务。;一个配送公司可以承接多次配送业务。18业务规则分析业务规则分析l配送单配送单的的配送状态配送状态记
23、录了该记录了该配送单配送单的当前配送情况:的当前配送情况:未发货、未发货、已发货、已送到已发货、已送到等。等。 l订单订单中的中的订单状态订单状态记录了该记录了该订单订单的当前处理情况:的当前处理情况:未审核、退未审核、退回、已审核、已部分配送、已全部配送、已处理结束回、已审核、已部分配送、已全部配送、已处理结束等。等。 l订单明细订单明细的的配送状态配送状态记录了该记录了该图书图书的当前配送情况:的当前配送情况:未配送、未配送、已部分配送、已全部配送已部分配送、已全部配送等。等。l当当订单订单中的某种中的某种图书图书全部送到后,则更新该全部送到后,则更新该图书图书的的配送状态配送状态为为“已
24、全部送到已全部送到”。当。当订单订单内全部内全部图书图书的的配送状态配送状态为为“已全部送已全部送到到”时,则更新该时,则更新该订单订单的的订单状态订单状态为为“已处理结束已处理结束”。 l一种一种图书图书由一个由一个出版社出版社出版,而一个出版,而一个出版社出版社可出版多种可出版多种图书图书。 l一个一个会员会员可发表多条可发表多条留言留言,一个,一个职员职员可回复多条可回复多条留言留言,但假设,但假设一条一条会员会员发布的发布的留言留言至多只回复一次。至多只回复一次。 19目目 录录确定联系集及确定联系集及E-R图图 6.5需求描述和系统边界需求描述和系统边界 6.1需求分析需求分析 6.
25、2确定实体集及属性确定实体集及属性 6.4检查是否满足需求检查是否满足需求 6.6逻辑数据库设计逻辑数据库设计 6.7模式求精模式求精6.8主要业务的概念建模分析主要业务的概念建模分析 6.320订单生成与订单审核订单生成与订单审核 n订单生成订单生成涉及涉及会员会员、图书图书等基本实体集,并会伴随着生等基本实体集,并会伴随着生成成订单订单和和订单明细订单明细。n根据根据4.6.2节的分析可知,伴随着节的分析可知,伴随着“订购订购”业务而形成的业务而形成的订单订单需要单独建模为需要单独建模为依赖实体集依赖实体集,它的属性有,它的属性有订单号、订单号、订购日期、应收总金额、实收总金额、付款方式、
26、订单订购日期、应收总金额、实收总金额、付款方式、订单状态、会员折扣、发票单位状态、会员折扣、发票单位等。等。n订单订单实体集与实体集与图书图书实体集之间存在实体集之间存在多对多多对多的的图书订购图书订购(即即订单明细订单明细)联系集,联系属性有联系集,联系属性有订购数量、定价、应收金订购数量、定价、应收金额、图书折扣、实收金额、配送状态额、图书折扣、实收金额、配送状态等。等。n订单订单实体集与实体集与会员会员、职员职员实体集之间分别存在着实体集之间分别存在着多对一多对一的的订购订购、审核审核联系集。联系集。 21订单订单订单号订单号订购日期ISBN书名订购订购会员会员职员职员审核审核订购数量图
27、书图书图书订购图书订购配送状态订单状态图图6-2 订单生成与订单审核业务的建模订单生成与订单审核业务的建模 n订单订单:应收总金额、实收总金额应收总金额、实收总金额为为派生属性派生属性,通过,通过图书订购图书订购汇总得汇总得到;到;会员折扣会员折扣也是也是派生属性派生属性,它的值取自,它的值取自会员会员实体集中该会员对应实体集中该会员对应属性;属性;发票单位发票单位属性的值默认取自属性的值默认取自会员会员的的单位属性单位属性,可修改。,可修改。 n图书订购图书订购:应收金额、实收金额应收金额、实收金额为为派生属性派生属性,可通过,可通过订购数量、定订购数量、定价、会员折扣、图书折扣价、会员折扣
28、、图书折扣等属性计算得到;等属性计算得到;定价、图书折扣定价、图书折扣也是也是派派生属性生属性,它们的值分别取自,它们的值分别取自图书图书实体集中该图书对应属性。实体集中该图书对应属性。 说明说明:为了不使:为了不使E-R图过于复杂,并未将实图过于复杂,并未将实体集、联系集的所有属性在图中画出来。体集、联系集的所有属性在图中画出来。22配送设置与图书配送配送设置与图书配送 n伴随着伴随着配送设置配送设置会生成会生成配送单配送单和和配送明细配送明细。n配送单配送单是依附于是依附于订单订单的,因此可将的,因此可将配送单配送单建模为建模为订单订单的的弱实弱实体集体集,属性有,属性有配送单号、收货人、
29、送货地址、邮政编码、联配送单号、收货人、送货地址、邮政编码、联系电话、发票编号、是否拆送系电话、发票编号、是否拆送等,等,配送单号配送单号为为部分码部分码。n一方面,一方面,订单订单实体集与实体集与配送单配送单弱实体集之间存在弱实体集之间存在一对多一对多的的包包含含标识联系集。标识联系集。n另一方面,另一方面,配送单配送单弱实体集与弱实体集与图书图书实体集之间存在实体集之间存在多对多多对多的的图书配送图书配送(即即配送明细配送明细)联系集,联系属性有联系集,联系属性有配送数量配送数量。n在在会员会员设置的设置的配送单配送单基础上,由基础上,由职员职员根据库存情况进行调整根据库存情况进行调整和确
30、认和确认,并分派给,并分派给配送公司配送公司进行进行配送配送。n因此,在因此,在配送单配送单弱实体集与弱实体集与职员职员实体集之间存在实体集之间存在多对一多对一的的分分派派联系集;在联系集;在配送单配送单弱实体集与弱实体集与配送公司配送公司实体集之间存在实体集之间存在多多对一对一的的配送配送联系集,联系属性有联系集,联系属性有配送日期、配送状态配送日期、配送状态。 23图图6-3 配送设置与图书配送业务的建模配送设置与图书配送业务的建模 订单订单ISBN书名订购订购会员会员职员职员审核审核图书图书图书订购图书订购订购数量配送状态订购日期订单状态已配送数量订单号订单号职员职员配送公司配送公司配送
31、日期分派分派配送配送配送状态配送单号配送单号收货人配送单配送单送货地址发票编号包含包含图书配送图书配送配送数量n图书配送图书配送联系集反映的是联系集反映的是配送明细配送明细信息,即一个信息,即一个配送单配送单中需要配送哪些中需要配送哪些图图书书?每一种?每一种图书图书的的配送数量配送数量是多少?是多少?n为了为了“核对核对”一个一个订单订单所订购的所有所订购的所有图书图书是否已经配送完毕,需在是否已经配送完毕,需在图书配图书配送送联系集与联系集与图书订购图书订购联系集之间进行联系集之间进行“配送核对配送核对”,它是多对一的,它是多对一的汇总核汇总核对对。n可在可在图书订购图书订购(即即订单明细
32、订单明细)联系集中增加一个派生属性联系集中增加一个派生属性已配送数量已配送数量,它可,它可在在图书配送图书配送(即即配送明细配送明细)联系集中按联系集中按订单号、图书编号订单号、图书编号汇总得到。汇总得到。24图图6-3 配送设置与图书配送业务的建模配送设置与图书配送业务的建模 订单订单ISBN书名订购订购会员会员职员职员审核审核图书图书图书订购图书订购订购数量配送状态订购日期订单状态已配送数量订单号订单号职员职员配送公司配送公司配送日期分派分派配送配送配送状态配送单号配送单号收货人配送单配送单送货地址发票编号包含包含图书配送图书配送配送数量n图书配送图书配送联系集反映的是联系集反映的是配送明
33、细配送明细信息,即一个信息,即一个配送单配送单中需要配送哪些图中需要配送哪些图书?每一种书?每一种图书图书的配送数量是多少?的配送数量是多少?n为了为了“核对核对”一个一个订单订单所订购的所有所订购的所有图书图书是否已经配送完毕,需在是否已经配送完毕,需在图书配图书配送送联系集与联系集与图书订购图书订购联系集之间进行联系集之间进行“配送核对配送核对”,它是多对一的,它是多对一的汇总核汇总核对对。n可在可在图书订购图书订购(即即订单明细订单明细)联系集中增加一个派生属性联系集中增加一个派生属性已配送数量已配送数量,它可,它可在在图书配送图书配送(即即配送明细配送明细)联系集中按联系集中按订单号、
34、图书编号订单号、图书编号汇总得到。汇总得到。n如果一个如果一个订单明细订单明细的的已配送数量已配送数量与与订购数量订购数量的值相同,则可将该的值相同,则可将该订单明细订单明细的的配送状态配送状态置为置为“已全部配送已全部配送”。n如果同一个如果同一个订单订单的所有的所有订单明细订单明细的的配送状态配送状态都为都为“已全部配送已全部配送”,则可将,则可将该该订单订单的的订单状态订单状态置为置为“已全部配送已全部配送”。n如果一个如果一个订单订单的所有的所有配送单配送单的的配送状态配送状态都为都为“已送到已送到”,则可将该,则可将该订单订单的的订单状态订单状态置为置为“已处理结束已处理结束”。 2
35、5图图6-4 配送设置与图书配送业务的另一种建模方案配送设置与图书配送业务的另一种建模方案 订单订单ISBN书名订购订购会员会员职员职员审核审核图书图书图书订购图书订购订购数量配送状态订购日期订单状态已配送数量订单号订单号职员职员配送公司配送公司配送日期分派分派配送配送配送状态图书配送图书配送配送数量配送地址配送单配送单收货人配送单号配送单号发票编号另一种建模方案:另一种建模方案:将将配送单配送单建模为强建模为强实体集,而实体集,而图书配图书配送送建模为实体集建模为实体集配配送单送单与联系实体集与联系实体集图书订购图书订购(即即联系实联系实体集体集)之间的之间的多对多多对多联系集。联系集。 2
36、6图书采购与图书入库图书采购与图书入库 n图书采购图书采购涉及涉及职员职员(采购员采购员)、出版社出版社、图书图书等基本实体集,等基本实体集,并会伴随着生成并会伴随着生成采购单采购单和和采购明细采购明细。n根据根据4.6.2节的分析可知,伴随着节的分析可知,伴随着“采购采购”业务而形成的业务而形成的采购采购单单需要单独建模为需要单独建模为依赖实体集依赖实体集,它的属性有,它的属性有采购单号、采购采购单号、采购日期、采购总金额日期、采购总金额等,其中等,其中采购总金额采购总金额为为派生属性派生属性,可通过,可通过图书采购图书采购(即即采购明细采购明细)联系集汇总得到。联系集汇总得到。n采购单采购
37、单实体集与实体集与图书图书实体集之间存在多对多的实体集之间存在多对多的图书采购图书采购联系联系集,联系属性有集,联系属性有采购数量、采购单价、采购金额采购数量、采购单价、采购金额等,其中等,其中采采购金额购金额为为派生属性派生属性。n采购单采购单实体集与实体集与职员职员实体集之间存在多对一的实体集之间存在多对一的采购采购联系集;联系集;采购单采购单实体集与实体集与出版社出版社实体集之间存在多对一的实体集之间存在多对一的供应供应联系集联系集27图图6-5 图书采购业务的建模图书采购业务的建模 n图书采购图书采购联系集反映的就是联系集反映的就是采购明细采购明细,即一个,即一个采购单采购单中采购了哪
38、些中采购了哪些图书图书?每一种每一种图书图书的的采购数量、单价采购数量、单价分别是多少?显然在一个分别是多少?显然在一个采购单采购单的的采购明细采购明细中,每一种中,每一种图书图书只能出现一次只能出现一次。n假设同一种假设同一种图书图书允许在一个允许在一个采购单采购单的的采购明细采购明细中中出现多次出现多次,即,即图书采购图书采购是是多值联系多值联系,则可以将,则可以将图书采购图书采购联系集建模为联系集建模为采购明细采购明细弱实体集弱实体集(序号序号为为部分部分码码),它依赖于,它依赖于采购单采购单实体集而存在。实体集而存在。n这样在一个这样在一个采购单采购单中可以方便地表示同一种中可以方便地
39、表示同一种图书图书以不同价格采购的情况以不同价格采购的情况。 采购单采购单图书图书图书采购图书采购采购采购职员职员出版社出版社供应供应采购单号采购单号采购日期ISBN采购数量采购单价书名采购单编采购单编号号图书编号图书编号采购时间采购时间采购数量采购数量Cg1Ts12016-4-2140Cg1Ts12016-4-216028图图6-5 图书采购业务的建模图书采购业务的建模 n图书采购图书采购联系集反映的就是联系集反映的就是采购明细采购明细,即一个,即一个采购单采购单中采购了哪些中采购了哪些图书图书?每一种每一种图书图书的的采购数量、单价采购数量、单价分别是多少?显然在一个分别是多少?显然在一个
40、采购单采购单的的采购明细采购明细中,每一种中,每一种图书图书只能出现一次只能出现一次。n假设同一种假设同一种图书图书允许在一个允许在一个采购单采购单的的采购明细采购明细中中出现多次出现多次,即,即图书采购图书采购是是多值联系多值联系,则可以将,则可以将图书采购图书采购联系集建模为联系集建模为采购明细采购明细弱实体集弱实体集(序号序号为为部分部分码码),它依赖于,它依赖于采购单采购单实体集而存在。实体集而存在。n这样在一个这样在一个采购单采购单中可以方便地表示同一种中可以方便地表示同一种图书图书以不同价格采购的情况以不同价格采购的情况。 采购单采购单图书图书图书采购图书采购采购采购职员职员出版社
41、出版社供应供应采购单号采购单号采购日期ISBN采购数量采购单价书名采购单采购单图书图书采购采购职员职员出版社出版社供应供应采购单号采购单号采购日期采购明细采购明细参照参照ISBN书名组成组成采购单价序号序号采购数量图图6-6 图书采购业务的改进建模图书采购业务的改进建模 29图书采购与图书入库图书采购与图书入库 n图书采购图书采购到货后需要办理到货后需要办理图书入库图书入库手续。手续。n入库单入库单是依附于是依附于采购单采购单的,因此将的,因此将入库单入库单建模为建模为采购单采购单的弱的弱实体集,属性有实体集,属性有入库单号、入库日期入库单号、入库日期,入库单号入库单号为为部分码部分码。n一方
42、面,一方面,采购单采购单实体集与实体集与入库单入库单弱实体集之间存在弱实体集之间存在一对多一对多的的拥有拥有标识联系集。标识联系集。n另一方面,另一方面,图书图书入库会涉及到入库会涉及到职员职员(采购员和仓库保管员采购员和仓库保管员)、图书图书等基本实体集,等基本实体集,入库单入库单弱实体集与弱实体集与图书图书实体集之间存在实体集之间存在多对多多对多的的图书入库图书入库联系集,联系属性有联系集,联系属性有入库数量入库数量。n入库单入库单弱实体集与弱实体集与职员职员(采购员采购员)实体集之间存在实体集之间存在多对一多对一的的入入库库联系集;联系集;入库单入库单弱实体集与弱实体集与职员职员(仓库保
43、管员仓库保管员)实体集之间实体集之间存在存在多对一多对一的的验收验收联系集。联系集。 30图图6-7 图书采购与图书入库业务的建模图书采购与图书入库业务的建模 采购单采购单采购采购职员职员出版社出版社供应供应采购日期采购明细采购明细组成组成入库入库验收验收职员职员参照参照图书图书ISBN书名图书入库图书入库入库数量是否入库采购单号采购单号入库日期入库单号入库单号入库单入库单拥有拥有采购单价序号序号采购数量n一个一个采购单采购单采购的采购的图书图书可能可能分多次到货入库分多次到货入库,因此,在,因此,在图书入库图书入库联系集与联系集与采购明细采购明细弱实体集之间需要进行弱实体集之间需要进行“入库
44、核对入库核对”。n(1) 一笔一笔采购明细采购明细可能可能分多次入库分多次入库;(2) 虽然一笔虽然一笔图书入库图书入库只能来自于一个只能来自于一个采购单采购单的的采购明细采购明细,但由于在一个,但由于在一个采购单采购单中同一种中同一种图书图书可能在可能在采购明细采购明细中中出现多次出现多次,导致在,导致在图书入库图书入库中同一种中同一种图书图书的多个的多个采购明细采购明细可能需可能需合并入库合并入库n因此,因此,图书入库图书入库联系集与联系集与采购明细采购明细弱实体集之间的弱实体集之间的“入库核对入库核对”是是多对多多对多的的31图图6-7 图书采购与图书入库业务的建模图书采购与图书入库业务
45、的建模 采购单采购单采购采购职员职员出版社出版社供应供应采购日期采购明细采购明细组成组成入库入库验收验收职员职员参照参照图书图书ISBN书名图书入库图书入库入库数量是否入库采购单号采购单号入库日期入库单号入库单号入库单入库单拥有拥有采购单价序号序号采购数量n“入库核对入库核对”的方法:首先对的方法:首先对采购明细采购明细弱实体集按弱实体集按采购单号、图书编号采购单号、图书编号汇汇总总采购数量采购数量;然后对图书入库联系集按;然后对图书入库联系集按采购单号、图书编号采购单号、图书编号汇总汇总入库数量入库数量,如果一个如果一个入库单入库单中所有中所有图书图书的的汇总采购数量汇总采购数量都等于都等于
46、汇总入库数量汇总入库数量,则表示,则表示该该采购单采购单已已入库完毕入库完毕。 n可在可在采购单采购单实体集中增加一个实体集中增加一个是否入库是否入库属性。如果同一个属性。如果同一个采购单采购单中每一种中每一种图书图书都已入库,则可将都已入库,则可将采购单采购单实体集中对应实体的实体集中对应实体的是否入库是否入库置为置为“Y”。 32目目 录录确定联系集及确定联系集及E-R图图 6.5需求描述和系统边界需求描述和系统边界 6.1需求分析需求分析 6.2确定实体集及属性确定实体集及属性 6.4检查是否满足需求检查是否满足需求 6.6逻辑数据库设计逻辑数据库设计 6.7模式求精模式求精6.8主要业
47、务的概念建模分析主要业务的概念建模分析 6.333发现实体集的步骤发现实体集的步骤n实体集是具有相同类型及相同性质实体集是具有相同类型及相同性质(或属性或属性)的实体的实体集合。通常,集合。通常,一个实体对应一个一个实体对应一个事物事物,是,是名词名词。n发现实体集的步骤可归纳为:发现实体集的步骤可归纳为:l找出需求分析中出现的具有一组属性的找出需求分析中出现的具有一组属性的“名词名词”;l分析这些分析这些“名词名词”信息是否需要存储。对于不需要存储信息是否需要存储。对于不需要存储的的“名词名词”不必建模为实体集;不必建模为实体集;l分析这些分析这些“名词名词”是否依赖于其它对象存在。如果是,
48、是否依赖于其它对象存在。如果是,可考虑建模为可考虑建模为依赖实体集依赖实体集、弱实体集弱实体集或或联系集联系集。34发现实体集发现实体集n网上书店系统中的网上书店系统中的“名词名词”主要有:主要有:会员会员、职员职员、图书图书、出版出版社社、配送公司配送公司、订单订单、配送单配送单、采购单采购单、入库单入库单、订单明细订单明细、采购明细采购明细、入库明细入库明细、购物车购物车、留言留言和和发票发票等。等。n显然,显然,会员会员、职员职员、图书图书、出版社出版社、配送公司配送公司等都是对应为等都是对应为有有形的人、物或单位形的人、物或单位,且都具有一组属性且部分属性能唯一标识,且都具有一组属性且
49、部分属性能唯一标识每个实体,而且它们需要存储到数据库中供查询用,因此可直每个实体,而且它们需要存储到数据库中供查询用,因此可直接建模为实体集。接建模为实体集。 n购物车购物车用于临时存放购书信息,包括选购图书的用于临时存放购书信息,包括选购图书的ISBN、图书、图书名称、订购数量、订购价格名称、订购数量、订购价格。订单成功提交后,购物车中的信。订单成功提交后,购物车中的信息将全部存放到订单中去。息将全部存放到订单中去。故故购物车购物车不必建模为一个实体集。不必建模为一个实体集。35发现实体集发现实体集n根据根据6.3节的分析可知,伴随着业务发生而形成的节的分析可知,伴随着业务发生而形成的订单订
50、单、采购采购单单等分别建模为依赖等分别建模为依赖订购订购、采购业务采购业务的的依赖实体集依赖实体集;并将;并将配配送单送单建模为依赖于建模为依赖于订单订单的的弱实体集弱实体集,采购明细采购明细、入库单入库单都建都建模为依赖于模为依赖于采购单采购单的的弱实体集弱实体集;而将;而将订单明细订单明细、入库明细入库明细分分别建模为别建模为图书订购图书订购、图书入库图书入库联系集。联系集。n发票发票是提供给是提供给会员会员的的购书凭证购书凭证。每张。每张发票发票有唯一的有唯一的发票编号发票编号。由于每个由于每个配送单配送单对应生成一张对应生成一张发票发票,而且,而且发票发票并并没有太多的没有太多的属性需
51、要存储属性需要存储,因此这里,因此这里不将不将发票发票建模为实体集建模为实体集,而是将,而是将发发票编号票编号建模为建模为配送单配送单弱实体集的属性,弱实体集的属性,发票单位发票单位建模为建模为订单订单实体集的属性实体集的属性(假设一个订单生成的一张或多张发票的发票单假设一个订单生成的一张或多张发票的发票单位相同位相同)。 36确定各实体集的属性和主码确定各实体集的属性和主码 n确定属性的总原则确定属性的总原则:只需要将那些与应用相关的特征建模为实只需要将那些与应用相关的特征建模为实体集的属性体集的属性。对于网上书店,图书的重量、印刷单位等信息不。对于网上书店,图书的重量、印刷单位等信息不必建
52、模为图书实体集的属性。必建模为图书实体集的属性。n属性确定后,还要进一步属性确定后,还要进一步分析属性是分析属性是简单属性简单属性还是还是复合属性复合属性,是是单值属性单值属性还是还是多值属性多值属性。n选择由哪些属性来构成实体集的选择由哪些属性来构成实体集的主码主码,即能唯一标识各个实体,即能唯一标识各个实体的属性或属性集。当一实体集存在多个候选码时,可按的属性或属性集。当一实体集存在多个候选码时,可按4.3.2中中的原则选择主码。的原则选择主码。n确定属性时一个确定属性时一个容易犯的错误容易犯的错误:一实体集将一实体集将其它实体集的其它实体集的主码主码作为其属性,而不是使用作为其属性,而不
53、是使用联系联系。换句话说,当一实体集需将另。换句话说,当一实体集需将另一实体集的一实体集的主码主码作为其属性时,需通过建模为作为其属性时,需通过建模为联系集联系集来解决。来解决。37n职员职员(Employee)实体集。其属性有:实体集。其属性有:职员编号职员编号(employeeNo)、登登录密码录密码(empPassword)、姓名姓名(empName)、性别性别(sex)、出生日期出生日期(birthday)、部门部门(department)、职务职务(title)、薪水薪水(salary)、住址住址(address)、电话电话(telephone)、电子邮箱电子邮箱(email)等。图
54、等。图6-8为为职员职员实实体集的体集的数据字典数据字典。 确定各实体集的属性和主码确定各实体集的属性和主码 属性名属性名含义含义类别类别域及约束域及约束employeeNo职员编号职员编号主码主码char(10),不允许取空值empPassword登录密码登录密码char(10),不能少于6位empName姓名姓名varchar(20),不允许取空值sex性别性别char(2),取值范围:男, 女birthday出生日期出生日期datetimedepartment部门部门varchar(30)title职务职务varchar(20)salary薪水薪水numericaddress住址住址va
55、rchar(40)telephone电话电话char(13),由数字字符加连字符-组成email电子邮箱电子邮箱varchar(20)图图6-8 职员职员(Employee)实体集的数据字典实体集的数据字典38n会员会员(Member)实体集。其属性有:实体集。其属性有:会员编号会员编号(memberNo)、登录登录密码密码(memPassword)、姓名姓名(memName)、性别性别(sex)、出生日期出生日期(birthday)、电话电话(telephone)、电子邮箱电子邮箱(email)、地址地址(address)、邮邮政编码政编码(zipCode)、单位单位(unit)、购书总额购
56、书总额(totalAmount)、会员等级会员等级(memLevel)、等级购书额定等级购书额定(levelSum)、会员折扣会员折扣(memDiscount).n订单订单(OrderSheet)实体集。其属性有:实体集。其属性有:订单号订单号(orderNo)、订购订购日期日期(orderDate)、应收总金额应收总金额(amountReceivable)、实收总金额实收总金额(paidAmount)、会员折扣会员折扣(memDiscount)、付款方式付款方式(payWay)、是是否付款否付款(paidFlag)、订单状态订单状态(orderState)、发票单位发票单位(invoiceU
57、nit).n配送单配送单(ShipSheet)弱实体集弱实体集。其属性有:。其属性有:配送单号配送单号(shipNo)、配配送日期送日期(shipDate)、收货人收货人(receiver)、送货地址送货地址(shipAddress)、邮邮政编码政编码(zipCode)、联系电话联系电话(shipTel)、是否拆送是否拆送(separatedFlag)、发票编号发票编号(invoiceNo)、配送状态配送状态(shipState)等。等。确定各实体集的属性和主码确定各实体集的属性和主码 39n采购单采购单(PurchaseSheet)实体集。其属性有:实体集。其属性有:采购单号采购单号(pur
58、chaseNo)、采购日期采购日期(purDate)、采购总金额采购总金额(purAmount)、是是否入库否入库(storedFlag)。n采购明细采购明细(PurchaseBook)弱实体集弱实体集。其属性有:。其属性有:序号序号(serialNo)、采购数量采购数量(purQuantity)、采购单价采购单价(purPrice)等。等。n入库单入库单(StoreSheet)弱实体集弱实体集。其。其属性有:属性有:入库单号入库单号(storeNo)、入库日期入库日期(storeDate)等。等。 n图书图书(Book)实体集。其属性有:实体集。其属性有:书号书号(ISBN)、书名书名(bo
59、okTitle)、作者作者(author)、出版日期出版日期(publishDate)、版次版次(version)、类别类别(category)、库存数量库存数量(stockNumber)、定价定价(price)、图书折扣图书折扣(bookDiscount)、内容简介内容简介(introduction)、目录目录(catalog)等。等。 确定各实体集的属性和主码确定各实体集的属性和主码 40n出版社出版社(Press)实体集。其属性有:实体集。其属性有:出版社编号出版社编号(pressNo)、出版社出版社名称名称(pressTitle)、出版社地址出版社地址(address)、邮政编码邮政编
60、码(zipCode)、联系联系人人(contactPerson)、联系电话联系电话(telephone)、传真传真(fax)、电子邮箱电子邮箱(email)等。等。n配送公司配送公司(Company) 实体集。其属性有:实体集。其属性有:公司编号公司编号(companyNo)、公司名称公司名称(companyTitle)、公司地址公司地址(address)、邮政编码邮政编码(zipCode)、联系人联系人(contactPerson)、联系电话联系电话(telephone)、传真传真(fax)、电子邮箱电子邮箱(email)等。等。 n留言留言(Message)实体集。其属性有:实体集。其属性
61、有:留言编号留言编号(messageNo)、留言留言日期日期(messageDate)、留言内容留言内容(messageContent)、回复日期回复日期(replyDate)、回复内容回复内容(replyContent)等。等。 确定各实体集的属性和主码确定各实体集的属性和主码 41目目 录录确定联系集及确定联系集及E-R图图 6.5需求描述和系统边界需求描述和系统边界 6.1需求分析需求分析 6.2确定实体集及属性确定实体集及属性 6.4检查是否满足需求检查是否满足需求 6.6逻辑数据库设计逻辑数据库设计 6.7模式求精模式求精6.8主要业务的概念建模分析主要业务的概念建模分析 6.342
62、确定联系集及确定联系集及E-R图图 n当当发现两个或多个实体之间的发现两个或多个实体之间的某种行为需要记录某种行为需要记录时,可建模时,可建模为一个为一个联系集联系集。n确定联系集的一个重要任务是:确定联系集的一个重要任务是:分析所建模分析所建模联系集联系集的的映射基映射基数数,即参与联系的实体集中的一个实体通过该联系集能同时,即参与联系的实体集中的一个实体通过该联系集能同时与另一个实体集中多少个实体相联系与另一个实体集中多少个实体相联系(参见参见4.3.1节节)。n同同实体集实体集一样,一样,联系集联系集也可以有自己的描述属性也可以有自己的描述属性。要注意的。要注意的是,是,联系集联系集已包
63、含了所有参与该联系的实体集的主码属性已包含了所有参与该联系的实体集的主码属性,故在故在E-R图中参与联系的图中参与联系的实体集实体集的的主码主码属性属性不要作为不要作为联系集联系集的描述属性画出的描述属性画出。43确定联系集及属性确定联系集及属性n图书订购图书订购(OrderBook)联系集:它是联系集:它是订单订单实体集和实体集和图书图书实体集实体集之间的之间的多对多多对多联系集,其描述属性有:联系集,其描述属性有:订购数量订购数量(quantity)、定定价价(price)、图书折扣图书折扣(bookDiscount)、已配送数量已配送数量(shippedQuantity)、配送状态配送状
64、态(shipState)。图。图6-12为为图书订购图书订购联系集的联系集的数据字典数据字典。属性名属性名含义含义类别类别域及约束域及约束quantity订购数量订购数量intprice定价定价派生派生numeric,取图书图书实体集中该图书对应属性当前值bookDiscount图书折扣图书折扣派生派生float,取图书图书实体集中该图书对应属性当前值shippedQuantity已配送数量已配送数量派生派生int,从图书配送图书配送联系集中统计得到shipState配送状态配送状态派生派生char(1),取值范围:A, B, C, D, E,分别代表“未配送”、“已部分配送”、“已全部配送”
65、、“已部分送到”、“已全部送到”图图6-12 图书订购图书订购(OrderBook)联系集的数据字典联系集的数据字典44确定联系集及属性确定联系集及属性n订购订购(Order)联系集:联系集:订单订单实体集和实体集和会员会员实体集之间的实体集之间的多对一多对一联系集,联系集,没有联系属性。没有联系属性。 n审核审核(Check)联系集:联系集:订单订单实体集和实体集和职员职员实体集之间的实体集之间的多对一多对一联系集,联系集,没有联系属性。没有联系属性。 n包含包含(Include)标识联系集标识联系集:订单订单实体集和实体集和配送单配送单弱实体集之间的弱实体集之间的一一对多对多联系集,没有联
66、系描述。联系集,没有联系描述。 n图书配送图书配送(ShipBook)联系集:联系集:配送单配送单弱实体集和弱实体集和图书图书实体集之间的实体集之间的多对多多对多联系集,联系属性有:联系集,联系属性有:配送数量配送数量(shipQuantity)。 n分派分派(Assign)联系集:联系集:配送单配送单弱实体集和弱实体集和职员职员实体集之间的实体集之间的多对一多对一联联系集,没有联系属性。系集,没有联系属性。 n配送配送(Ship)联系集:联系集:配送单配送单弱实体集和弱实体集和配送公司配送公司实体集之间的实体集之间的多对多对一一联系集,联系属性联系集,联系属性配送日期配送日期(shipDat
67、e)、配送状态配送状态(shipState)已建已建模为模为配送单配送单弱实体集的属性。弱实体集的属性。 45确定联系集及属性确定联系集及属性n组成组成(Compose)标识联系集标识联系集:采购单采购单实体集和实体集和采购明细采购明细弱实体集之弱实体集之间的间的一对多一对多联系集,没有联系属性。联系集,没有联系属性。 n参照参照(Reference)联系集:联系集:采购明细采购明细弱实体集和弱实体集和图书图书实体集之间的实体集之间的多多对一对一联系集,没有联系属性。联系集,没有联系属性。 n拥有拥有(Hold)标识联系集标识联系集:采购单采购单实体集和实体集和入库单入库单弱实体集之间的弱实体
68、集之间的一一对多对多联系集,没有联系属性。联系集,没有联系属性。 n采购采购(Purchase)联系集:联系集:采购单采购单实体集和实体集和职员职员实体集之间的实体集之间的多对一多对一联系集,没有联系属性。联系集,没有联系属性。 n供应供应(Supply)联系集:联系集:采购单采购单实体集和实体集和出版社出版社实体集之间的实体集之间的多对一多对一联系集,没有联系属性。联系集,没有联系属性。 n图书入库图书入库(StoreBook)联系集:联系集:入库单入库单弱实体集和弱实体集和图书图书实体集之间的实体集之间的多对多多对多联系集,联系属性有:联系集,联系属性有:入库数量入库数量(quantity
69、)。 46确定联系集及属性确定联系集及属性n入库入库(Store)联系集:联系集:入库单入库单弱实体集和弱实体集和职员职员实体集之间的实体集之间的多对一多对一联联系集,没有联系属性。系集,没有联系属性。 n验收验收(Accept)联系集:联系集:入库单入库单弱实体集和弱实体集和职员职员实体集之间的实体集之间的多对一多对一联系集,没有联系属性。联系集,没有联系属性。 n发布发布(Release)联系集:联系集:会员会员实体集与实体集与留言留言实体集之间的实体集之间的一对多一对多联系联系集,联系属性集,联系属性留言日期留言日期(releaseDate)、留言内容留言内容(messageConten
70、t)已已建模为建模为留言留言实体集的属性。实体集的属性。 n回复回复(Reply)联系集:联系集:职员职员实体集与实体集与留言留言实体集之间的实体集之间的一对多一对多联系集,联系集,联系属性联系属性回复日期回复日期(replyDate)、回复内容回复内容(replyContent) 已建模为已建模为留留言言实体集的属性。实体集的属性。 n属于属于(Belong)联系集:联系集:图书图书实体集和实体集和出版社出版社实体集之间的实体集之间的多对一多对一联联系集,没有联系属性。系集,没有联系属性。 47留言留言发布发布回复回复参照参照采购明细采购明细组成组成采购单采购单采购采购出版社出版社供应供应属
71、于属于入库入库验收验收图书入库图书入库入库数量拥有拥有入库单入库单会员会员职员职员订购订购审核审核图书订购图书订购订单订单图书图书图书折扣订购数量配送状态已配送数量定价配送单配送单包含包含图书配送图书配送配送数量职员职员分派分派配送公司配送公司配送日期配送配送配送状态图图6-13 网上书店总网上书店总E-R图图 48目目 录录确定联系集及确定联系集及E-R图图 6.5需求描述和系统边界需求描述和系统边界 6.1需求分析需求分析 6.2确定实体集及属性确定实体集及属性 6.4检查是否满足需求检查是否满足需求 6.6逻辑数据库设计逻辑数据库设计 6.7模式求精模式求精6.8主要业务的概念建模分析主
72、要业务的概念建模分析 6.349网上书店总网上书店总E-R图存在的问题图存在的问题n仔细分析,发现该仔细分析,发现该E-R图存在如下问题:图存在如下问题:l数据冗余数据冗余。会员等级、等级购书额定、会员折扣会员等级、等级购书额定、会员折扣等信息在等信息在每个每个会员会员中都中都冗余存储冗余存储。l将它独立出来,单独建立将它独立出来,单独建立会员等级会员等级(MemClass)实体集,属实体集,属性有性有会员等级会员等级(memLevel)、等级购书额定等级购书额定(levelSum)、会员会员折扣折扣(memDiscount)等。等。l会员会员与与会员等级会员等级实体集之间存在实体集之间存在多
73、对一多对一的的引用引用(Citation)联联系集。如图系集。如图6-14所示。所示。 会员会员会员编号会员编号会员等级会员等级会员等级会员等级引用引用购书总额会员折扣等级购书额定图图6-14 会员会员实体集与实体集与会员等级会员等级实体集之间的实体集之间的引用引用联系集联系集 50网上书店总网上书店总E-R图存在的问题图存在的问题l业务规则脱离现实需求业务规则脱离现实需求。l例如,如果例如,如果图书图书有多个有多个作者作者,如何处理如何处理?读者去思考解决。?读者去思考解决。l再如,对于再如,对于留言留言的的发布发布与与回复回复,现规定的,现规定的业务规则业务规则为:为: 一一会员会员可可发
74、布发布多条多条留言留言,且一,且一留言留言只能由一只能由一会员会员发布发布; 一一留言留言由某由某职员职员至多至多回复回复一次,但一一次,但一职员职员可以可以回复回复多条多条留言留言。 l显然,显然,该业务规则不能较好地满足现实需求该业务规则不能较好地满足现实需求。可考虑将。可考虑将留言留言发布发布与与回复回复业务的业务的业务规则业务规则修改为:修改为: 一一会员会员可可发布发布多条多条留言留言,且一,且一留言留言只能由一只能由一会员会员发布发布; 对于一条对于一条留言留言(即一个即一个主题主题),一,一职员职员可以可以回复回复多次,也可以多多次,也可以多个个职员职员进行进行回复回复; 其他其
75、他会员会员也可对某也可对某会员会员的一条的一条留言留言进行多次进行多次回复回复,包括,包括会员会员本本人也可对自己已经人也可对自己已经发布发布的一条的一条留言留言进行进行回复回复。 51网上书店总网上书店总E-R图存在的问题图存在的问题l分析该业务规则可知:分析该业务规则可知:会员会员(Member)与与留言留言(Message)之间的之间的一对多一对多发布发布(Release)联联系集的语义并没有变化;系集的语义并没有变化;对于对于回复回复业务,不仅业务,不仅留言留言实体集分别与实体集分别与职员职员、会员会员实体集之间实体集之间存在存在多对多多对多的的回复回复联系,而且这种联系,而且这种回复
76、回复联系是联系是多值联系多值联系,因为,因为一个一个职员职员或或会员会员可以对同一条可以对同一条留言留言进行多次进行多次回复回复。l由于由于回复回复业务是依赖于业务是依赖于留言留言实体集,且一个实体集,且一个留言留言允许有多个允许有多个回复回复,因此,可考虑如下的,因此,可考虑如下的回复回复业务建模方案:业务建模方案: 建立一个建立一个留言留言实体集的实体集的留言回复留言回复(MessageReply)弱实体集弱实体集,属,属性性回复编号回复编号(replyNo)为为部分码部分码,标识联系集标识联系集是是指向指向(Direct); 在在职员职员实体集与实体集与留言回复留言回复弱实体集之间存在弱
77、实体集之间存在一对多一对多的的回复回复1 1 (Reply1)联系集,在联系集,在会员会员实体集与实体集与留言回复留言回复弱实体集之间存在弱实体集之间存在一对多一对多的的回复回复2 2(Reply2)联系集,联系属性均为联系集,联系属性均为回复日期回复日期(replyDate)、回复内容回复内容(replyContent)。 留言回复留言回复留言留言会员会员发布发布指向指向回复回复1 1职员职员留言日期留言内容回复回复2 2回复日期回复内容留言编号留言编号回复编号回复编号回复日期回复内容52会员等级会员等级引用引用留言回复留言回复留言留言会员会员发布发布指向指向回复日期回复内容留言日期留言内容
78、回复回复1 1回复日期回复内容回复回复2 2采购明细采购明细组成组成参照参照采购单采购单采购采购出版社出版社供应供应属于属于会员会员职员职员订购订购审核审核图书订购图书订购订单订单图书图书图书折扣订购数量配送状态已配送数量定价配送单配送单包含包含图书配送图书配送配送数量职员职员分派分派配送公司配送公司配送日期配送配送配送状态入库入库验收验收图书入库图书入库入库数量拥有拥有入库单入库单图图6-16 改进的改进的网上书店总网上书店总E-R图图 53目目 录录确定联系集及确定联系集及E-R图图 6.5需求描述和系统边界需求描述和系统边界 6.1需求分析需求分析 6.2确定实体集及属性确定实体集及属性
79、 6.4检查是否满足需求检查是否满足需求 6.6逻辑数据库设计逻辑数据库设计 6.7模式求精模式求精6.8主要业务的概念建模分析主要业务的概念建模分析 6.354会员等级会员等级引用引用留言回复留言回复留言留言会员会员发布发布指向指向回复日期回复内容留言日期留言内容回复回复1 1回复日期回复内容回复回复2 2采购明细采购明细组成组成参照参照采购单采购单采购采购出版社出版社供应供应属于属于会员会员职员职员订购订购审核审核图书订购图书订购订单订单图书图书图书折扣订购数量配送状态已配送数量定价配送单配送单包含包含图书配送图书配送配送数量职员职员分派分派配送公司配送公司配送日期配送配送配送状态入库入库
80、验收验收图书入库图书入库入库数量拥有拥有入库单入库单图图6-16 改进的改进的网上书店总网上书店总E-R图图 55逻辑数据库设计逻辑数据库设计 n设计出设计出E-R图后,可根据图后,可根据4.8节所给出的原则将节所给出的原则将E-R图转换为数据库模式。图转换为数据库模式。n通常是通常是每个每个实体集实体集(包括强和弱实体集包括强和弱实体集)都对应于一都对应于一个个关系表关系表。而。而联系集联系集则应根据则应根据映射基数映射基数决定具体转决定具体转换方式换方式。n图图6-16所示的所示的 E-R图可转为如下数据库模式,其中图可转为如下数据库模式,其中主码主码属性属性加加下划线下划线、外码外码属性
81、属性加加斜体斜体以示区分。以示区分。 56逻辑数据库设计逻辑数据库设计n职员职员Employee表表:由:由职员职员(Employee)实体集转化而来。实体集转化而来。属性名称属性名称数据类型数据类型属性描述属性描述employeeNochar(10)职员编号职员编号empPasswordchar(10)登录密码登录密码empNamevarchar(20)姓姓 名名sexchar(2)性性 别别birthdaydatetime出生日期出生日期departmentvarchar(30)部部 门门titlevarchar(20)职职 务务salarynumeric薪薪 水水addressvarch
82、ar(40)住住 址址telephonevarchar(15)电电 话话emailvarchar(20)电子邮箱电子邮箱图图6-17 职员职员Employee表表57逻辑数据库设计逻辑数据库设计n会员会员Member表表:由:由会员会员(Member)实体集转化而来。实体集转化而来。 属性名称属性名称数据类型数据类型属性描述属性描述memberNochar(10)会员编号会员编号memPasswordchar(10)登录密码登录密码memNamevarchar(20)姓姓 名名sexchar(2)性性 别别birthdaydatetime出生日期出生日期telephonevarchar(15)
83、电电 话话emailvarchar(20)电子邮箱电子邮箱addressvarchar(40)住住 址址zipCodechar(6)邮政编码邮政编码unitvarchar(20)单单 位位totalAmountnumeric购书总额购书总额memLevelchar(1)会员等级会员等级图图6-18 会员会员Member表表58逻辑数据库设计逻辑数据库设计n会员等级会员等级MemClass表表:由:由会员等级会员等级(MemClass)实体集实体集转化而来。转化而来。图图6-19 会员等级会员等级MemClass表表属性名称属性名称数据类型数据类型属性描述属性描述memLevelchar(1)会
84、员等级会员等级levelSumnumeric等级购书额定等级购书额定memDiscountfloat会员折扣会员折扣59逻辑数据库设计逻辑数据库设计n图书图书Book表表:由由图书图书(Book)实体集和实体集和一对多一对多的的属于属于(Belong)联联系集共同转化而来系集共同转化而来。 图图6-20 图书图书Book表表属性名称属性名称数据类型数据类型属性描述属性描述ISBNchar(17)书书 号号bookTitlevarchar(30)书书 名名authorvarchar(40)作作 者者publishDatedatetime出版日期出版日期versionint版版 次次categor
85、yvarchar(20)类类 别别stockNumberint库存数量库存数量pricenumeric定定 价价bookDiscountfloat图书折扣图书折扣introductionvarchar(500)内容简介内容简介catalogvarchar(500)目目 录录pressNochar(12)出版社编号出版社编号60逻辑数据库设计逻辑数据库设计n出版社出版社Press表表:由:由出版社出版社(Press)实体集转化而来。实体集转化而来。 图图6-21 出版社出版社Press表表属性名称属性名称数据类型数据类型属性描述属性描述pressNochar(12)出版社编号出版社编号press
86、Titlevarchar(20)出版社名称出版社名称addressvarchar(40)出版社地址出版社地址zipCodechar(6)邮政编码邮政编码contactPersonvarchar(12)联联 系系 人人telephonevarchar(15)联系电话联系电话faxvarchar(15)传传 真真emailvarchar(20)电子邮箱电子邮箱61逻辑数据库设计逻辑数据库设计n配送公司配送公司Company表表:由:由配送公司配送公司(Company)实体集转化而来实体集转化而来图图6-22 配送公司配送公司Company表表属性名称属性名称数据类型数据类型属性描述属性描述comp
87、anyNochar(12)公司编号公司编号companyTitlevarchar(20)公司名称公司名称addressvarchar(40)公司地址公司地址zipCodechar(6)邮政编码邮政编码contactPersonvarchar(12)联联 系系 人人telephonevarchar(15)联系电话联系电话faxvarchar(20)传传 真真emailvarchar(20)电子邮箱电子邮箱62逻辑数据库设计逻辑数据库设计n留言留言Message表表:由:由留言留言(Message)实体集和发布实体集和发布(Release)联系联系集共同转化而来。集共同转化而来。图图6-23 留言
88、留言Message表表属性名称属性名称数据类型数据类型属性描述属性描述messageNochar(10)留言编号留言编号memberNochar(10)发布会员编号发布会员编号releaseDatedatetime留言日期留言日期messageContentvarchar(100)留言内容留言内容63逻辑数据库设计逻辑数据库设计n留言回复留言回复MessageReply表表:由:由留言回复留言回复(MessageReply)弱实体弱实体集和集和一对多一对多的的标识联系集标识联系集指向指向(Direct)以及以及一对多一对多的联系集的联系集回回复复1(Reply1)、回复回复2(Reply2)共
89、同转化而来。共同转化而来。图图6-24 留言回复留言回复MessageReply表表属性名称属性名称数据类型数据类型属性描述属性描述messageNochar(10)留言编号留言编号replyNochar(4)回复编号回复编号employeeNochar(10)回复职员编号回复职员编号memberNochar(10)回复会员编号回复会员编号replyDatedatetime回复日期回复日期replyContentvarchar(100)回复内容回复内容64逻辑数据库设计逻辑数据库设计n订单订单OrderSheet表表:由:由订单订单(OrderSheet)实体集以及实体集以及一对多一对多的的订
90、购订购(Order)、审核审核(Check)联系集转化而来。联系集转化而来。图图6-25 订单订单OrderSheet表表属性名称属性名称数据类型数据类型属性描述属性描述orderNo char(15)订单编号订单编号memberNo char(10)会员编号会员编号employeeNo char(10)职员编号职员编号orderDatedatetime订购日期订购日期amountReceivablenumeric应收总金额应收总金额paidAmountnumeric实收总金额实收总金额memDiscountfloat会员折扣会员折扣payWaychar(1)付款方式付款方式paidFlagc
91、har(1)是否付款是否付款orderStatechar(1)订单状态订单状态invoiceUnitvarchar(40)发票单位发票单位65逻辑数据库设计逻辑数据库设计n订单明细订单明细OrderBook表表:由:由图书订购图书订购(OrderBook)多对多多对多联系联系集转化而来。集转化而来。图图6-26 订单明细订单明细OrderBook表表属性名称属性名称数据类型数据类型属性描述属性描述orderNochar(15)订单编号订单编号ISBNchar(17)图书编号图书编号quantityint订购数量订购数量pricenumeric定定 价价bookDiscountfloat图书折扣
92、图书折扣shippedQuantityint已配送数量已配送数量shipStatechar(1)配送状态配送状态66逻辑数据库设计逻辑数据库设计n配送单配送单ShipSheet表表:由:由配送单配送单(ShipSheet)弱实体集弱实体集和和一对多一对多的的包含包含(Include)标识联系集标识联系集以及以及一对多一对多的联系集的联系集分派分派(Assign)、配送配送(Ship)转化而来。转化而来。图图6-27 配送单配送单ShipSheet表表属性名称属性名称数据类型数据类型属性描述属性描述orderNochar(15)订单编号订单编号shipNochar(4)配送单号配送单号recei
93、vervarchar(20)收收 货货 人人shipAddressvarchar(40)送货地址送货地址zipCodechar(6)邮政编码邮政编码shipTelvarchar(15)联系电话联系电话separatedFlagchar(1)是否拆送是否拆送invoiceNovarchar(20)发票编号发票编号shipDatedatetime配送日期配送日期shipStatechar(1)配送状态配送状态companyNochar(12)配送公司编号配送公司编号employeeNochar(10)职员编号职员编号67逻辑数据库设计逻辑数据库设计n配送明细配送明细ShipBook表表:由:由图书
94、配送图书配送(ShipBook)多对多多对多联系集转联系集转化而来。化而来。图图6-28 配送明细配送明细ShipBook表表属性名称属性名称数据类型数据类型属性描述属性描述orderNochar(15)订订 单单 号号shipNochar(4)配送单号配送单号ISBNchar(17)图书编号图书编号shipQuantityint配送数量配送数量68逻辑数据库设计逻辑数据库设计n采购单采购单PurchaseSheet表表:由:由采购单采购单(PurchaseSheet)实体集以及实体集以及一对多一对多的的采购采购(Purchase)、供应供应(Supply)联系集转化而来。联系集转化而来。图图
95、6-29 采购单采购单PurchaseSheet表表属性名称属性名称数据类型数据类型属性描述属性描述purchaseNochar(15)采购单号采购单号purDatedatetime采购日期采购日期purAmountnumeric采购总金额采购总金额storedFlagchar(1)是否入库是否入库employeeNochar(10)职员编号职员编号pressNochar(12)出版社编号出版社编号69逻辑数据库设计逻辑数据库设计n采购明细采购明细PurchaseBook表表:由:由采购明细采购明细(PurchaseBook)弱实体弱实体集集和和一对多一对多的的标识联系集标识联系集组成组成(C
96、ompose)以及以及一对多一对多的联系集的联系集参照参照(Reference)转化而来。转化而来。图图6-30 采购明细采购明细PurchaseBook表表属性名称属性名称数据类型数据类型属性描述属性描述purchaseNochar(15)采购单号采购单号serialNochar(4)序序 号号ISBNchar(17)图书编号图书编号purQuantityint采购数量采购数量purPricenumeric采购单价采购单价storedQuantityint已入库数量已入库数量70逻辑数据库设计逻辑数据库设计n入库单入库单StoreSheet表表:由:由入库单入库单(StoreSheet)弱实
97、体集弱实体集和和一对多一对多的的标识联系集标识联系集拥有拥有(Hold)以及以及一对多一对多的联系集的联系集入库入库(Store)、验验收收(Accept)转化而来。转化而来。图图6-31 入库单入库单StoreSheet表表属性名称属性名称数据类型数据类型属性描述属性描述purchaseNochar(15)采购单号采购单号storeNochar(4)入库单号入库单号storeDatedatetime入库日期入库日期sEmployeeNochar(10)入库职员编号入库职员编号aEmployeeNochar(10)验收职员编号验收职员编号71逻辑数据库设计逻辑数据库设计n入库明细入库明细Sto
98、reBook表表:由:由图书入库图书入库(StoreBook)多对多多对多联系集联系集转化而来。转化而来。图图6-32 入库明细入库明细StoreBook表表属性名称属性名称数据类型数据类型属性描述属性描述purchaseNochar(15)采购单号采购单号storeNochar(4)入库单号入库单号ISBNchar(17)图书编号图书编号quantity int入库数量入库数量72目目 录录确定联系集及确定联系集及E-R图图 6.5需求描述和系统边界需求描述和系统边界 6.1需求分析需求分析 6.2确定实体集及属性确定实体集及属性 6.4检查是否满足需求检查是否满足需求 6.6逻辑数据库设计
99、逻辑数据库设计 6.7模式求精模式求精6.8主要业务的概念建模分析主要业务的概念建模分析 6.373模式求精模式求精n如果直接根据图如果直接根据图6-9所示的所示的会员会员(Member)实体集的数据字典转实体集的数据字典转化得到一个关系模式,则该关系模式中存在一个化得到一个关系模式,则该关系模式中存在一个对非主属性的对非主属性的函数依赖关系函数依赖关系:memLevel levelSum, memDiscount,由此,由此导致的问题是导致的问题是数据冗余数据冗余,即每一个相同等级会员都需要存放,即每一个相同等级会员都需要存放levelSum和和memDiscount。该关系模式。该关系模式
100、不满足不满足BCNF范式范式。n据据BCNF分解算法,该关系模式可分解为以下分解算法,该关系模式可分解为以下2个关系模式:个关系模式:lMember ( memberNo, memPassword, memName, sex, birthday, telephone, email, address, zipCode, totalAmount, memLevel )lMemClass ( memLevel, levelSum, memDiscount )n这就是图这就是图6-18和图和图6-19所示的关系模式。可以验证,它们都满所示的关系模式。可以验证,它们都满足足BCNF要求,且是无损分解要求
101、,且是无损分解(因为公共属性因为公共属性memLevel是关系是关系MemClass的主码的主码)。 74进一步思考进一步思考 n本章给出了一个基本的网上书店的需求分析、概念数据本章给出了一个基本的网上书店的需求分析、概念数据库设计库设计(E-R模型模型)和逻辑数据库设计和逻辑数据库设计(关系数据库模式关系数据库模式)的的全过程。但是本实例未考虑全过程。但是本实例未考虑网上结算网上结算与与退货退货等功能,请等功能,请读者在上述设计基础上,进一步考虑下列功能:读者在上述设计基础上,进一步考虑下列功能:l增加增加客户退货功能客户退货功能,客户可在三包期内退货;,客户可在三包期内退货;l增加增加网上结算功能网上结算功能,包括客户存款和结帐付款等;,包括客户存款和结帐付款等;l实现实现图书销售排行榜图书销售排行榜以及以及查询畅销图书、滞销图书信息查询畅销图书、滞销图书信息等等功能。功能。l实现实现库存管理、成本核算、帐务管理库存管理、成本核算、帐务管理等功能。等功能。l实现实现客户关系管理客户关系管理,如实现,如实现客户跟踪服务客户跟踪服务、图书推荐图书推荐、发发现客户的潜在需求现客户的潜在需求等个性化服务功能。等个性化服务功能。75本章结束!本章结束!请同学们对本章内容进行请同学们对本章内容进行复习、总结!复习、总结!