数据库总结

     自己在复习数据库的时候,总想着怎么样更形象地表示数据库的那些概念,让它看的不那么专业。同时也将以前听课没注意到的重点在此总结一下。首先来看一个比较幼稚例子。假设你是一所幼儿园的校长,你要统计出小朋友喜欢的水果,最喜爱的动漫人物以及所属于那部动漫作品。呵呵,统计这些东西是有目的的,你会发现,这些东西都可以用图片表示出来。当然这些小朋友也是比较特殊的,贝贝、晶晶、欢欢、迎迎和妮妮。根据网上查阅资料,贝贝象征繁荣、晶晶象征欢乐、欢欢象征激情、迎迎象征健康、妮妮象征好运以及水果与人性格的关系,我这里臆断了认为欢欢喜欢梨子,梨子象征繁荣,香蕉则比较欢快,菠萝比较热情,柚子则健康,而桃子则象征好运(桃花运)。根据你设计的问题,统计出这张表。这张表其实是一张“泛关系”的表,首先这些属性(列)是由关系的。

从这张表可以看到存在冗余,<西游记,孙悟空>和<葫芦娃,火娃>出现两次,在数据量更大的情况下可能出现更多次。假设用这张表,然后候选键为什么?你分析一下,小朋友的ID肯定是候选键(候选键的概念,请翻阅数据库教材)之一,就可以了么。貌似不行,因为动漫电影不由这个决定,那么动漫人物加上作为候选键之一,根据这个候选键(小朋友名字,动漫人物),你会发现动漫电影局部依赖了动漫人物,因为动漫人物确定了,那么电影名字也定了。所以这里要分解。但如果非要将候选键只设小朋友名字,则电影名字->动漫人物->小朋友ID,很明显这是个传递依赖。范式的提出是从消除冗余的角度出发,但是我们还要研究语义的正确性即保证这样分解后,再连接不会丢失或悬挂的记录。

一范式:

          上图定义的即为一范式,简单明了。

二范式:

           直观上将冗余的分解出去(消除局部依赖)。

三范式:

            消除传递依赖。传递依赖有三种形式:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值