首页 百科知识 完善和优化逻辑模型

完善和优化逻辑模型

时间:2022-10-17 百科知识 版权反馈
【摘要】:⑤ 添加了“会员卡号”列后,显得“顾客类型”列是多余的,因为可以利用外键值能取空的情况来表示散客购买。因此,可删除“顾客类型”列。“部门”表和“仓库”表出现了循环参照,应该删除“仓库编号”参照约束,同时删除“部门”表中“仓库编号”外键列。分解后的表以年份命名,每年会产生一张这样的表,这种水平分解还起到对历史数据归档的作用。

7.4.3 完善和优化逻辑模型

(1)规范化检查

对每个表进行检查,具体调整如下:

■ 部门表:“部门-部门编号”改为“上级部门编号”。

仓库表:“部门编号”改为“管理部门编号”。

■ 仓位-存货表:该表是“仓位”和“仓库存货”两个实体间的多对多联系产生的,是两者之间的联系桥梁,在实际应用中可简化这种联系的表达方式。具体的简化办法是:删除该表,在“仓库存货”表中添加“仓位编号”列,将该列设为外键。

■ 品牌-商品种类:同“仓位-存货”表的处理办法,删除该表,在“商品种类”表中添加“品牌编号”列,将该列设为外键。

■ 供应商表:“员工编号”改为“采购员编号”。

■ 采购订单表:“员工编号”改为“采购员编号”。

■ 入库单表:“员工编号”改为“库管员编号”。

■ 仓务调拨表:①“部门编号”改为“分店编号”;②“员工编号”改为“库管员编号”。

■ 分店调拨表:①“部门编号”改为“调拨分店编号”;②“员工编号”改为“调拨员编号”。

■ 存货-调拨表:同“仓位-存货”表的处理办法,删除该表,在“分店调拨明细表”表中添加“商品编号”列,将该列设为外键。

■ 顾客表:该表只有“顾客类型”一个列,用于指明零售的顾客类别。因此,可删除该表,在“零售单”表中添加“顾客类型”列。

■ 零售单表:①“部门编号”改为“分店编号”。②“员工编号”改为“营业员编号”。③“金额”可由“数量、原价和折扣率”计算而来,属于计算列,应该删除。④ 刚添加的“顾客类型”列只能取值{散客,会员}之一。当为会员时,要指明具体哪一个会员,因此,需要添加“会员卡号”列,作为外键。⑤ 添加了“会员卡号”列后,显得“顾客类型”列是多余的,因为可以利用外键值能取空的情况来表示散客购买。因此,可删除“顾客类型”列。

检查调整完后,应该调整列的显示顺序。

(2)确定和设置表的主键

检查每个表是否存在主键,并确定是否需要重新设置,具体调整如下:

■ 仓库存货表:该表存放了仓务部和各分店的存货,因此,应该设置“仓位编号+商品编号”为复合主键。相应的,与“仓库存货表”相关且设置了“商品编号”为外键的表需要添加“仓位编号”列并设为外键,这些相关的表是:入库明细表、仓务调拨明细表、分店调拨明细表、零售单表。

■ 采购订单明细表:设置“订单编号+商品编号”为复合主键。

■ 入库明细表:设置“入库单号+仓位编号+商品编号”为复合主键。

■ 仓务调拨明细表:设置“调拨单号+仓位编号+商品编号”为复合主键。

■ 分店调拨明细表:设置“调拨单号+仓位编号+商品编号”为复合主键。

(3)确定和建立表的关系

首先,检查是否存在循环参照的情况。“部门”表和“仓库”表出现了循环参照,应该删除“仓库编号”参照约束,同时删除“部门”表中“仓库编号”外键列。

然后,检查每个表是否还有需要设置外键的列,具体操作如下:

■ 采购订单表:将“审核人”列设置为“员工”表中“员工编号”的外键,同时,修改“审核人”列的长度为10。

■ 入库单表:将“质检员”列设置为“员工”表中“员工编号”的外键,同时,修改“审核人”列的长度为10。

(4)确定和定义业务规则

ERM系统在字段级没有特别的业务规则要求,而记录级和表级的业务规则要求,详见第8章相关内容。

(5)合并和分解表

对于随时间推移而记录不断增长的表,如零售单表,如果需要按零售年进行查询,可以考虑进行水平分解。分解后的表以年份命名,每年会产生一张这样的表,这种水平分解还起到对历史数据归档的作用。

至此,我们可得到完善后的逻辑模型,如图7-5所示。

img120

图7-5

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈