• 数据库设计三大范式简单理解


    数据库设计三大范式?首先第一点这三个范式是哪三个范式?

    第一个范式就是说每列必须保证原子性,不可再分,原子性指的就是不可再分的最小单位,打个比方就是地址中包含省市这些地址,需要把它划分成最小的单位,某某省,某某市,这就保证了他的原子性。

    第二点就是,表中的每一列必须与主键有依赖关系,而不能是部分依赖。举个列子,下表就是  学号、课程号、姓名、学分

    这个表说明了两个事物,学生信息,课程信息,这里学分依赖课程号,姓名依赖学号,所以不符合第二范式。

    正确的做法就是:

    学生:Student(学号,姓名)

    课程:Course(课程号,学分)

    由此派生出选课关系:StudentCourse(学号,课程号,成绩)

    第三点就是,表中的数据必须与主键字段之间相关,而不能是部分相关。

    那第三范式就是对字段的冗余性提出的要求,要求任何字段不能由其他字段派生出来,它要求字段没有冗余,就是不存在传递依赖;

    比如有张表:学号,姓名  年龄,学院名称,学院电话

    因为存在依赖传递:学号  学生  所在学院  学院电话 ,它包含了两个信息,一个是学生信息,一个是学院信息,像这个就会存在问题,数据冗余,出现重复值,重复值就是学号为1,2的人有相同的学院名称,有重复的值,就会出现冗余的信息,也就是修改时需要同时修改多条记录,如果学院名字修改了的话,就需要把学院里面的字段值都给它更改掉,否则就会出现数据不一致的情况。

    正确的做法:学生一张表(学号,姓名,年龄,所在学院),学院一张表(学院,学院电话)

  • 相关阅读:
    python中删除某个元素的3种方法
    研发团队开源管理工具最佳实践
    Cocos2dx游戏开发系列笔记13:一个横版拳击游戏Demo完结篇
    Sunny谈软件架构
    整理部分JS 控件 WEB前端常用的做成Jsp项目,方便今后直接用
    hdu3033I love sneakers! (分组背包,错了很多次)
    Using关键字的用法
    Android webViewj简单处理apk的下载链接
    山寨腾讯“爱消除”游戏之菜单特效
    Apache与Nginx优缺点比较
  • 原文地址:https://www.cnblogs.com/medigrat/p/12194026.html
Copyright © 2020-2023  润新知