数据库3范式

     完全函数依赖

  定义:在R(U)中,如果X->Y,对于X的任意一个真子集X',都有X'不能决定Y,则称Y对X完全函数依赖,记为XY 。

            例:(S#,CN)->G

     部分函数依赖

   定义:在R(U)中,如果X-> Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖。

     传递函数依赖

    定义:在R(U)中,当且仅当X-> Y,Y->Z时,称Z对X传递函数依赖。

     例:描述学生(S#)、班级(SB)、辅导员(TN)的关系U(S#,SB,TN)。一个班有若干学生,一个学生只属于一个班,一个班只有一个辅导员,但一个辅导员负责几个班。根据现实世界可得到一组函数依赖:

           F={S#->SB,SB->TN}

学生学号决定了所在班级,所在班级决定了辅导员,所以辅导员TN传递函数依赖于学生学号S#。

1、第一范式(1NF):没个字段的值要保证其原子性(不可被拆分)。

      eg:不满足1nf:地址:四川省成都市;

                正确:地址:省:四川省; 市:成都市;

2、第二范式(2NF):满足第一范式,然后消除部分依赖。(每个表只描述一件事)

                       没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。 

      eg:不满足2NF:学生信息表:学号(主键),姓名,系名,系主任,课程名称,分数。(正确:学号--》姓名,学号--系名,学号--》系主任,)

               问题:1.部分依赖    分数  --依赖--》  (课程名称+学号)

                     正确,拆分表:学生表:学号,姓名,系名,系主任;

                                学生成绩:学号,课程名称,成绩;

3、第三范式(3NF): 满足第二范式,消除传递依赖。

                    eg:不满足3NF:学生信息表:学号(主键),姓名,系名,系主任。

                             问题: 学号 --》 系名,系名--》系主任;存在传递依赖

                              正确,拆分表:学生信息表:学号(主键),姓名,系名;

                                                            学校系: 系名,系主任;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值