数据库设计系列[02]为什么要学习数据库设计
2012-12-17 22:57 Mike.Jiang 阅读(1564) 评论(0) 编辑 收藏 举报1,不好的数据库设计,产生的问题?
在数据库概念设计阶段,对于同一领域建模,不同的建模人员得到的结果不一样,从而转换后的关系模式也不一样。这样就存在关系模式的优劣之分。学习数据库设计,就是要学习前人总结的一些规则,常用的表示方法。在学习如何进行设计之前,我们先了解下差的设计产生的问题。
2,示例场景
在采购的场景中,需要记录订单号、商品信息和操作人信息。如果我们这样设计
存在的问题有:数据冗余、插入异常、更新异常和删除异常;
2.1数据冗余
在这个应用设计中,OrderNum和CreateName重复存储了。当订单量很大,这样的浪费就很可观了。
2.2 插入异常
从这个关系模式的设计中,我们可以看到OrderNum与GoodsName构成主键。那么当没有人购买商品时,商品就无法入库。显然这样是不合理的。
2.3 更新异常
如果,创建人王小二改名为王小一,那么就要更新诸多的行。又或者,由于一些验证的问题,出现“三宝”和“3宝”这样的数据,从语义上讲这是同一个商品,但是从数据库中是分辨不出来,在出报表时就很头疼。
2.4 删除异常
如果,在二年后,3宝产品停产了,我们想删除3宝这样的产品,使它不能再被采购。但是,我们同样也就删除了111123这样的一个采购历史记录。这样也是不合理的。
3, 总结
总的来说,对于同样的一个应用领域,我们即能设计出好的模式,也能做出差的模式。那么我们应该怎么设计,才能更加的接近于好的模式。我们需要遵守一些设计范式。设计范式是什么呢,在下一篇文章中再写。