• 【数据库】02_范式


    数据库范式

    范式:想要设计一个好的关系,必须使关系满足一定的约束条件。

    此约束已经形成了规范,按照这种规范可以使设计简洁的、结构明晰,不会因为插入删除、更新数据导致异常。

    常见名词:

    属性:也是特征,表中的一列,也叫字段

    元组:表中的一行

    码:表中唯一确定一个元组的属性,码不止一个,叫这些为候选码

    主码:从候选码挑选出来一个主要确定这一行的属性。

    主属性:只要在一个候选码中出现过,这个属性就叫主属性。

    非主属性:一次也没出现过

    第一范式(1NF)

    定义:属性不可分。

    意思就是表中的属性不能再次拆分。例如你的联系方式属性当中,不能再次拆分电话和邮箱。

    第二范式(2NF)

    定义:不存在组合关键字中的某些字段决定非关键字段。组合关键字不可拆。

    例如主属性1、2共同决定了列1、2、3,就是符合范式。

    但是如果仅仅是1就能决定三个列,就拆分了主属性,就是不行的。

    举例:学号、姓名、年龄、课程名称、成绩、学分。

    主属性学号和课程名称,学号决定23,名称决定6,但是14决定2356。

    问题剖析:数据冗余,更新异常,插入异常。

    冗余的解决办法:拆。

    第三范式(3NF)

    定义:不存在依赖传递。

    关键字段——非关键字段1——非关键字段2,这种就是传递。

    例如刚才的课程名称就决定了其他的非关键字段,而他自己也是一个非关键字段,不符合3NF。

    还是拆表的方式来解决问题。

    2NF和3NF的区别:

    非主键全部依赖与主键,但是3NF非主键部分依赖于部分主键。

    鲍依斯-科得范式(BCNF)

    定义:不存在关键字段决定关键字段

    关键字段之间不允许有传递关系。例如互相决定。

  • 相关阅读:
    CDH大数据平台 ModuleNotFoundError: No module named ‘MySQLdb‘
    QUIC 协议:特性、应用场景及其对物联网/车联网的影响
    MySQL相关知识汇总
    STM32/Linux系统学习
    碎片笔记|AIGC核心技术综述
    面向对象设计模式——工厂方法(Method Factory))
    DirectX绘制流水线
    使用 Kotlin DSL 编写网络爬虫
    Spring常用注解。
    腾讯云应用服务器新增用户名密码
  • 原文地址:https://blog.csdn.net/callmejielun/article/details/126511445