设一位教师可担任多门课,一门课也可由多位教师教,那么:该关系属于(C)。

有一教师关系为:课程任务(工号、教师名、职称、课程名、班级名、学时名),设一位教师可担任多门课,一门课也可由多位教师教,那么:该关系属于(C)。
A.非规范关系B.1NF关系C.2NF关系D.3NF关系
这个怎么是2NF,我怎么感觉是1NF

1NF(第一范式)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值

你这个两个实体,怎么是1NF,当然2NF

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/722968
  • 除此之外, 这篇博客: 数据库范式详细介绍(1NF,2NF,3NF,BCNF,4NF)中的 如果某仓库更换了管理员,会带来什么问题?——这个仓库有几条物品存放记录,就要修改多少次管理员信息。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 从这里我们可以得出结论,在某些特殊情况下,即使关系模式符合 3NF 的要求,仍然存在着插入异常,修改异常与删除异常的问题,仍然不是 ”好“ 的设计。

    造成此问题的原因:存在着主属性对于码的部分函数依赖与传递函数依赖。(在此例中就是存在主属性【仓库名】对于码【(管理员,物品名)】 的部分函数依赖。
    解决办法就是要在 3NF 的基础上消除主属性对于码的部分与传递函数依赖。

    在这里插入图片描述

    在这里插入图片描述
    这样,之前的插入异常,修改异常与删除异常的问题就被解决了。
    以上就是关于 BCNF 的解释。


    第四范式(4NF):要求把同一表内的多对多关系删除。

    • 通俗地说,对于有三个属性的表,给定属性A一个值,剩余两个列之间不存在多对多的关系。例如,在下面的SPE表中,给定SNO=S1,PNO和ENO之间很明显存在多对多的关系,故上表是不属于4NF的。
    • 非形式说:只要两个独立的1:N联系出现在一个关系中,那么就可能出现多只依赖。

    那么关系SPE(SNO,PNO,ENO)对应的表数据可能是如下:
    在这里插入图片描述

    此时表SPE存在如下的函数依赖:
    (PNO,ENO)→SNO

    根据BCNF的定义,此时表SPE属于BCNF。但是这样的关系模式仍具有不好的地方:数据冗余度太大。假如供应商S3生产了n个零件,每个零件供应给m个工程,那么显然S3要在表中重复m*n次。

    分解表

    在这里插入图片描述
    课程→学生

    课程→先修课

    两个均是1:N的关系,当出现在一张表的时候,会出现大量的冗余。所以就我们需要分解它,减少冗余。(Ps:该例子主要是为了说明概念帮助理解,具体应用中不会只是这样的简单粗暴的。)

    分解表
    在这里插入图片描述