数据库设置三大范式
三范式
一范式
1 设计的表要有主键
比如说 有张表示 有这么几个字段 name address 如果在表中有几条记录是一致的,假设出现2个王武,地址也一样,就会出现数据的冗余。
2 列不可分,和重复。
比如说 有张表 user 只有一个字段 为userinfo 保存数据是 张三,23,北京市 ,带来的问题就是,不方便查询和维护,建议有用3个字段来表示。但是实际问题,实际分析。
二范式
不能存在部分依赖。
一范式
1 设计的表要有主键
比如说 有张表示 有这么几个字段 name address 如果在表中有几条记录是一致的,假设出现2个王武,地址也一样,就会出现数据的冗余。
2 列不可分,和重复。
比如说 有张表 user 只有一个字段 为userinfo 保存数据是 张三,23,北京市 ,带来的问题就是,不方便查询和维护,建议有用3个字段来表示。但是实际问题,实际分析。
二范式
不能存在部分依赖。
多对多的情况下,比如也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。
这样在该表中商品名称、单位、商品价格等信息不与该表的主键相关,而仅仅是与商品编号相关
合理的设计如下
三范式
第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。
比如在设计一个订单数据表的时候,可以将客户编号作为一个外键和订单表建立相应的关系。而不可以在订单表中添加关于客户其它信息(比如姓名、所属公司等)的字段。如下面这两个表所示的设计就是一个满足第三范式的数据库表。
这样在查询订单信息的时候,就可以使用客户编号来引用客户信息表中的记录,也不必在订单信息表中多次输入客户信息的内容,减小了数据冗余。
切记:
1NF:原子性,即每个字段都不可以在分割了。
2NF:唯一性,即每个表只描述一个实体,这个实体要有主键,非主关键字要完全依赖主键,正因为说是完全依赖,是因为在组合主键存在的情况下,非主关键字不能只依赖部分关键字。
3NF:一个表中不能包含其他表中已经存在的非主键字段信息,也就是说只可以包含其他表的主键信息,这样就是主外键,通过主外键就可以进行表之间的连接(join),3NF主要是减少数据冗余。