数据库三范式

1NF(列不可再分)

        1NF:原子性,字段不可以再分

2NF(不存在部分依赖)非键字段必须依赖于键字段

         2NF:唯一性,可以把多种数据保存在同一张表中,即一张表只能保存“一种”数据。

               Eg:(学号,姓名,年龄,课程名称,成绩,学分)这个表就是不符合2NF,因为它保存了多种数据类型。

       存在一定的问题:

                     (1)数据冗余,每条记录可能都含有相同的信息。

                     (2)删除异常:删除所有学生成绩,就把课程信息全删除了。

                     (3)插入异常:学生没有选课,无法记录进数据库。

                     (4)更新异常:调整课程学分,所有的行都要调整。

         要拆开,正确的示例如下:

                        学生表:Student(学号,姓名,年龄);

                        课程表:Course(课程名称,学分);

                        选课关系:Select(学号,课程名称,成绩);

 3NF(不存在传递依赖)在1NF基础上,除了主键以外的其它列都不传递依赖于主键列,或者说: 任何非主属性不依赖于其它非主属性

(在2NF基础上消除传递依赖)

                   3NF:直接性,每一列都和主键直接相关,而不能间接相关。

                   Eg:(学号,姓名,年龄,学院名称,学院电话)这张表就存在传递依赖,学号->姓名->学院名称->学院电话

                    可能存在问题:

                            (1)数据冗余:有重复值

                            (2)更新异常:有重复的冗余信息,修改时需要修改多条记录,否则会出现数据不一致的现象

                     正确的做法:

                            学生表:(学号,姓名,年龄,所在学院)

                            学院表:(学院,电话)

                            

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值