在逻辑设计中,对于同一个实体的存储,可以有多种不同的设计的方式。
比如用户实体跟购物车实体,可以将用户信息和购物车信息存储在同一张表中,也可以分别存储在不同的表中。两种方式哪一种更好一些呢?实际上就要通过一些,数据库设计的一些规范来进行选择,这也就是数据库设计的范式。
| 符合规范所设计的数据库 | 不符合这种规范式的设计 |
|---|---|
| 简洁高效、结构清晰 | 存在大量的数据冗余,浪费大量存储空间 |
| 避免数据的维护异常 | 存在数据的插入、更新、删除的异常 |
| 最大限度避免数据库的冗余 |
常见的数据库设计范式:
第一范式、第二范式、第三范式 以及 BC 范式。
当然还有第四、第五方式,不过在这侧重点放在前三个范式上,这也是目前大多数数据库设计所要遵循的范式。
如果数据库设计中存在着大量的操作异常和数据冗余,那么这个设计就不符合数据库范式要求
数据操作异常
数据操作异常包括:
| 异常分类 | 说明 |
|---|---|
| 插入异常 | 如果某实体伴随另一个实体的存在而存在,当缺少某个实体时无法表示另一个实体时,那么这个表就存在插入异常 |
| 更新异常 | 如果更改表所对应的某个实体实例的单独属性时,需要将多行更新,那么这个表就存在更新异常 |
| 删除异常 | 如果删除表的某一行来反映某实体实例,失效时导致另一个不同实体实例信息丢失,那么这个表中就存在删除异常 |
会导致在插入或者更新的时,可能会更新到其他并不应该更新,或者说并不应该删除的数据。
数据的冗余
指相同的数据在多个地方存在,或者表中的某个列可以由其他列来计算得到,这样表中就存在着数据的冗余。
导致对数据的一致性的维护造成很大的不便,漏掉某张表维护困难会导致数据一致性的异常。
1573

被折叠的 条评论
为什么被折叠?



