【摘要】:一个不合理的关系模式设计,经常会存在插入异常、删除异常、更新异常和数据冗余等问题。(一)插入异常插入异常表示数据插入时出现问题,即在缺另一个实体实例或关系实例的情况下,无法表示实体或关系的信息。(三)更新异常和数据冗余因为相同的数据重复存储,所以造成数据冗余。数据冗余所带来的问题一般有两个:一个为存储空间的浪费;另一个为数据库完整性的维护需要系统付出一定的代价。
一个不合理的关系模式设计,经常会存在插入异常、删除异常、更新异常和数据冗余等问题。
(一)插入异常(insert anomaly)
插入异常表示数据插入时出现问题,即在缺另一个实体实例或关系实例的情况下,无法表示实体或关系的信息。
如果一个出版社刚刚成立尚无图书出版,那么就无法把这个出版社的信息存入数据库;或者一个书店刚刚成立尚无订单,那么这个书店的信息就无法建立数据库。
(二)删除异常(delete anomaly)
如果删除表的某一行来反映某个实体实例或者关系实例消失时,会导致另一个不同实体实例或者关系实例的信息丢失,就表明出现删除异常。(www.xing528.com)
如果某个书店的订单全部被撤销,则我们在删除该订单的同时,会将该书店的名称一并删除,即这个书店也不再存在;或者一个出版社目前仅登录了一本图书的信息,我们在删除该本图书的同时,会将该出版社的信息一并删除,这将导致出版社信息的丢失。
(三)更新异常(update anomaly)和数据冗余
因为相同的数据重复存储,所以造成数据冗余。如果更改表所对应的某个实体实例或者关系实例的单个属性时,需要将多行的相关信息全部更新,那么就说明该表存在更新异常。例如,一个订单上有多本图书,它们同时向一个出版社征订图书,则在此关系中会存在多行订购信息的数据元组,必将重复出现如出版社名称、作者姓名、书店名等相同信息内容,造成大量的数据信息重复(称为数据冗余)。
数据冗余所带来的问题一般有两个:一个为存储空间的浪费;另一个为数据库完整性的维护需要系统付出一定的代价。例如,一个书店想要更改订购信息,就需要对信息相关的所有元组一一进行修改。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。