表在 2NF 标准化过程中会丢失主要属性吗?

问题描述 投票:0回答:1

我想把这张桌子带入2NF设计:

学生证 老师-不 老师 学生技能
S1 1 奥特 Python
S1 2 比格勒 Python
S1 1 奥特 SQL
S1 2 比格勒 SQL
S2 1 汉森 Python
S2 2 穆勒 Python
S3 1 史密斯 HTML
S3 1 史密斯 Java

学生 ID 唯一标识学生。
老师是老师的名字,取决于学生 ID 和老师编号的组合。
StudentSkill 是学生拥有的技能,与老师完全无关。

表格上写着:

学生 S1 有两位老师(Ott、Biegler)和两项不相关的技能(Python、SQL)。
学生 S2 有两位老师(Hansen、Muller)和一项不相关的技能(Python)。
学生 S3 有一名老师(Smith)和两项不相关的技能(HTML、Java)。

主键是(学生 ID、教师编号、学生技能)的组合。

存在部分依赖性。教师仅依赖于学生 ID 和教师编号。因此,我为教师姓名创建了一个新表:

学生证 老师-不 老师
S1 1 奥特
S1 2 比格勒
S2 1 汉森
S2 2 穆勒
S3 1 史密斯

并且原始表丢失了教师列:

学生证 老师-不 学生技能
S1 1 Python
S1 2 Python
S1 1 SQL
S1 2 SQL
S2 1 Python
S2 2 Python
S3 1 HTML
S3 1 Java

(学生 ID、教师编号、学生技能)表中的教师编号列怎么样?

它没有做任何有用的事情(因为技能与教师无关),但它是主键的一部分,所以我在创建 2NF 期间无法触及它。

表在 2NF 标准化过程中会丢失主要属性吗?

database database-normalization functional-dependencies
1个回答
0
投票

对于2NF

  1. 表格必须为 1NF
  2. 非键列不应部分依赖于复合主键。

因此,在这种情况下,删除第二个表中的教师编号列是正确的,因为技能仅取决于学生 ID。

© www.soinside.com 2019 - 2024. All rights reserved.