第三章 多表操作1(建表三范式)

1 为什么需要用多表保存数据

(1) 数据库中的不同的表一般对应不同的实体,不同的实体具有不同的属性,如果将所有的表都汇总成一张表,则需要将所有的属性都集合在一起,不管哪个实体有没有,然后在没有此属性的实体赋值时,赋值为空,这严重浪费了磁盘的空间吧。

(2)数据库中每张表都存储一定的记录,若将所有的记录都汇总成一张表,你查询的时候,速度将会非常慢,数据库查询的时候,你给它表名,它根据表名找到此表,然后一条一条的查询记录,但若都集中的一张表中,那此表的记录将时原来分开表中记录的n多倍,那得查询多少时间啊??

所以才产生见表的规范  建表三范式

 

2  建表三范式

 

第一范式:消除组中的重复,也就是说列中是否存储了其他列中的信息(字段不可再分) 

   比如:

1 设计的表要有主键

 比如说 有张表示 有这么几个字段   name address   如果在表中有几条记录是一致的,假设出现2个王武,地址也一样,就会出现数据的冗余。

2 列不可分,和重复。

比如说 有张表 user  只有一个字段 为userinfo   保存数据是  张三,23,北京市   ,带来的问题就是,不方便查询和维护,建议有用3个字段来表示。但是实际问题,实际分析。

 

 

第二范式:消除部分依赖列,也就是说是否有依赖于一部分主键的列 (非主键字段完全依赖主键字段) 

比如:

  

这样在该表中商品名称、单位、商品价格等信息不与该表的主键相关,而仅仅是与商品编号相关

合理的设计如下:

    

 

第三范式:消除非依赖列,是否有依赖于非主键的列 (消除传递依赖) 

  比如:

 这样在查询订单信息的时候,就可以使用客户编号来引用客户信息表中的记录,也不必在订单信息表中多次输入客户信息的内容,减小了数据冗余。

 

  总结:

归结起来3句话:  1NF:字段不可分;  2NF:有主键,非主键字段依赖主键;  3NF:非主键字段不能相互依赖; 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值