简单易懂的数据库三范式理解

原因:
对于三范式总是学了又忘o(︶︿︶)o ,所以在这做记录,同时也希望帮助其他同学。
说明:
以下解释没有官方的解释和说明,如果错误请大家指正,多谢。
正文:
注意:蓝色字体为主键。
1.第一范式:原子性。化学中的原子是物质的最小不能分割的单位,在这也同样是这个意思。举例
   uname   address
   小明      xx省yy市
   而实际查询时,我们只需要小明是位于哪个市,这时我们可以把address取出来再进行分割,   但这种处理方法不能解决根本的问题。因此需重新设计:
    uname  province  city
   小明       xx            yy

2.第二范式:完全依赖主键。这个含义稍微难理解。
    2.1:先理解依赖二字的含义。举例:
    tel(主键,电话号码) name(姓名)
    在这个表中,主键是电话号码,属性有姓名,而我们姓名是不可能由tel来决定的。所以   这个表的设计是毫无意义的,这里叫不依赖
2.2:再理解部分依赖。口语就是:依赖其中的一部分。这里我们要引入联合主键。举例:
    身份证      学号       生日
    id              sno      birthday
    xx1003yy   49        10月3号
    而我们的生日只是由联合主键中的身份证这个主键决定的,和学号没有关系。因此,生日   只是由联合主键的一部分决定的,这就叫做部分依赖。
2.3:完全依赖。。主键完全决定非主键属性,当我们只把id设为主键,而sno为非主键时,生日就完全依赖id了。

3.第三范式:消除传递依赖。文字说明;A决定B,B决定C,得到A可以决定C,这就叫做传递性。第三范式要消除这种关系。
   举例:
   学号决定学院,学院决定了宿舍的位置,这时,学号间接的决定了宿舍的位置
   学号         学院       宿舍位置
    sno          dept      location
   0113449   软件        宁庐
    解决方法:拆成两个表
    sno         dept(外键)
    dept       location

4.如果不遵循范式,会造成修改异常,删除异常,插入异常等问题,具体解释可见这个博友的文章:http://blog.sina.com.cn/s/blog_46d817650100yj2i.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值