您的位置:首页 > 数据库

数据建模基础理论 – 数据建模及规范化(1)

2014-03-03 19:51 260 查看
数据建模概要

数据建模的过程是将现实中的业务不断地进行抽象化(Abstraction),实现从现实世界(RealWorld)中的业务概念世界(Conception World)中的模型,再到计算机世界(ComputerWorld)中的的转换过程。



将现实世界中的业务根据抽象化的方法,转化为概念世界的数
4000
据模型,最终转换为能在数据库中的表,来保存该现实业务规则和表达现实业务特征的数据。在这个过程当中,为了保证将现实业务正确地、完整地、无冗余地保存到数据库中,需要在将现实世界抽象为概念世界模型之后对数据进行规范化(Normalization)。

本文中所说的规范化不是以数据库原理课程中复杂的关系代数的方式进行描述,虽然关系型数据库及其关系模型的理论基础是数学,但是本文中所说是实际应用时,更易于理解的例子来说明规范化。

规范化的目的

规范化的最重要的目的是为了消除数据的重复,从而解决由于数据的重复而导致的更改异常现象。

下面通过一个实际生活中常见的例子来说明更改异常现象。

现实生活中的,订单明细简如下图:



将订单明细用逻辑模型来表达之后,如下图:



这是一个典型的为经过规范化的表格。接下来就以这个表格为例子来说明三种更改异常。

更改异常(ModificationAnomaly)分为如下三种:

(1)插入异常(Inertion Anomaly)
在上面的表格中,订单号码和供货公司同时存在于该表中,”订货时必须明确供货公司”这条业务规则我们很容易就能看看出来,这也是没有问题的,但是如果在系统中添加供货公司的信息时,却一定要订货才行,因此,“添加供货公司时必须要先下订单”这样的业务规则是不正确的,如果修改这样的异常,满足“订货前需要先添加供货公司”和”允许单独管理供货公司相关信息“这样的业务规则,就需要将供货公司这个实体单独提取出来。

(2)更改异常(Update Anomaly)
同样是在该表中,如果需要修改供货公司的信息,例如修改供货公司的名称时,需要对该订单中的所有行进行修改,如果只是修改其中一行的话,就会产生异常,这就是数据的冗余可能会导致数据不一致。

(3)删除异常(Delete Anomaly)
想删除某供货公司的信息的话,则需要将该供货公司的所有订单信息同时删除。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库设计