什么是数据库设计呢,数据库设计就是规范和结构化数据库中的数据对象以及这些数据对象之间关系的过程。为什么需要规范的数据库设计,原因很简单,良好的数据库设计可以节省数据存储空间、能够保证数据的完整性、方便进行数据库应用系统的开发。
从用户的角度而言,将所有信息放在一个表中很方便,因为这样查询数据库可能会比较容易。但这样的表具有一系列的问题:信息重复、更新异常、插入异常、删除异常。想要避免这些异常,在数据库设计时就要遵守设计范式,遵守这些规则,就能设计出良好的数据库。
第一范式
- 每一列属性都是不可再分的属性值,确保每一列的原子性。
- 两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据。
显然这个表的结构不仅不能满足足够多的商品要求,而且还会在商品少的时候产生冗余,是不符合第一范式的。
第二范式
每一行的数据只能与其中一列相关,即一行数据只做一件事。只要数据列中出现数据重复,就要把表拆分开来。
一个人同时卖多件商品,就会产生一个订单多条数据,这样就造成联系人重复,数据冗余。应该把这张表
拆成两张表。
这样便实现一条数据做一件事,对表数据的更新维护操作更加容易。
第三范式
数据不能存在传递关系,即每个属性都跟主键有直接关系而不是间接关系。像:a-->b-->c 属性之间含有这样的关系,是不符合第三范式的。
比如订单表(商品名称,规格,收件人,商品编号,发货地址,收货地址)这样的表结构就存在间接关系。商品名称—>商品编号—>发货地址
要把这样的表结构拆开,(商品名称,规格,收件人,商品编号) --(发货地址,收货地址)