Database design 将3NF转换为BCNF

Database design 将3NF转换为BCNF,database-design,database-normalization,bcnf,Database Design,Database Normalization,Bcnf,我试图将我的表格从第三范式改为BCNF,但我不确定我是否完全理解这个概念 我设法通过1NF、2NF和3NF工作(我想),但需要帮助才能将其提交给BCNF 我有 **Students Table** ID -- First Name -- Last Name -- Age 1 -- Joe -- Jugg -- 22 2 -- Ben -- March -- 23 3 -- Sally -- Rainbow -- 19 **

我试图将我的表格从第三范式改为BCNF,但我不确定我是否完全理解这个概念

我设法通过1NF、2NF和3NF工作(我想),但需要帮助才能将其提交给BCNF

我有

**Students Table**

ID -- First Name -- Last Name -- Age
1  --   Joe      --   Jugg    -- 22
2  --   Ben      --   March   -- 23
3  --   Sally    -- Rainbow   -- 19



**StudentCourse Table**

ID -- Course Title -- Grade
1  -- Math         -- A
1  -- Physics      -- B
2  -- Math         -- C
3  -- Music        -- A


**Courses Table**

Course Title -- Course Fee -- Qualification -- Lecturer
Math         -- £1900      -- Advanced Level -- 2
Physics      -- £2300      -- Diploma        -- 1
Music        -- £1200      -- Certificate    -- 3



**Lecturers Table** 


Lecturer ID -- Lecturer Name
1           --  James Thomas
2           -- Harry Todd
3           -- Rachel Adam

我非常感谢您的帮助,如果您能向我解释这个概念,让我能理解,我将不胜感激,谢谢

我认为没有足够的信息来确定如何从3NF到达BCNF。我们需要了解一些关于表中列之间的关系的信息,以便进行推断和分析。除了已经满足BCNF的
StudentCourse
之外,所有表都包含不在多行中显示的信息,这对这些表没有任何帮助

在查看数据时,我们可以假设函数依赖关系,以用于工作示例。这并不意味着我所提供的答案是正确的,但会给出一些假设的见解

让我们假定:

  • 由特定讲师教授的课程名称始终以相同的资格级别教授
  • 所有证书均需支付1200英镑的费用
  • 所有高级资格证书的费用为1900英镑
  • 所有文凭都要缴纳2300英镑的费用
我们还假设
课程
表有以下行(注意附加的第四行):

这里我们有一个表中有两个函数依赖关系的例子:

  • 候选密钥#1=(
    课程名称,讲师
    )->(
    课程费用,资格
  • 候选密钥#2=(
    资格
    )->(
    课程费用
如果我们想将高级资格证书的课程费用改为2000英镑,那么因为我们必须更新
课程表中的两行,我们会遇到一个-这违反了BCNF。我们应该只需要更新某个表中的一行

为了满足BCNF的要求,我们需要创建一个新的
资格
表,如下所示:

Qualification  -- Course Fee
Certificate    -- £1200
Advanced Level -- £1900
Diploma        -- £2300
…结合该新表,我们将
课程
表更改为以下内容:

Course Title -- Qualification -- Lecturer
Math         -- Advanced Level -- 2
Physics      -- Diploma        -- 1
Music        -- Certificate    -- 3
Music        -- Advanced Level -- 4
我们现在遇到了BCNF,因为在
课程
表中不再有第二个候选密钥(
Qualification->CourseFee
),我们可以在一行上执行更新


您可以在以下链接中找到更多有用的信息:

  • (以高票通过的问题)

现在,你只是要求我们用定制的教程重写你的教科书&做你的(家庭)工作&你没有表现出任何研究或其他努力。请看,点击谷歌的“stackexchange家庭作业”和鼠标文本上方的投票箭头。按照你的课本展示你的工作步骤,并给出理由&问一个具体问题,你是第一个被卡住的地方。所有的零件都是重复的。“任何帮助”不是有效的SO问题。你没有给出解决这个问题所需要的任何东西,所以你似乎不太懂基本知识。教科书。
Course Title -- Qualification -- Lecturer
Math         -- Advanced Level -- 2
Physics      -- Diploma        -- 1
Music        -- Certificate    -- 3
Music        -- Advanced Level -- 4