从关系的角度来看,该视频充其量是草率和粗心的。它的某些部分是完全错误的,包括你引用的部分。不要再看“数据库规范化大师”的视频了。
对于处于 2NF 中的关系,它必须
如果一个属性依赖于任何候选键的一部分,则存在部分键依赖,并且关系不在 2NF 中。
视频试图说明的一点是,如果主键是单列,则关系保证为 2NF。但是看看这张表(来自2NF 的维基百科条目)。
Employees' Skills
--
Employee Skill Current Work Location
Jones Typing 114 Main Street
Jones Shorthand 114 Main Street
Jones Whittling 114 Main Street
Bravo Light Cleaning 73 Industrial Way
Ellis Alchemy 73 Industrial Way
Ellis Flying 73 Industrial Way
Harrison Light Cleaning 73 Industrial Way
这个关系只有一个候选键,{Employee, Skill}。但是 Employee 和 Current Work Location 之间存在部分关键依赖关系。给定 Employee 的任何值,我们为 Current Work Location 找到一个且只有一个值。
将主键更改为代理 ID 号不会改变这种情况,尽管视频暗示它会。
Employees' Skills
--
ID Employee Skill Current Work Location
1 Jones Typing 114 Main Street
2 Jones Shorthand 114 Main Street
3 Jones Whittling 114 Main Street
4 Bravo Light Cleaning 73 Industrial Way
5 Ellis Alchemy 73 Industrial Way
6 Ellis Flying 73 Industrial Way
7 Harrison Light Cleaning 73 Industrial Way
主键是单列,他们说这保证了这种关系在 2NF 中。但事实并非如此。视频制作者忽略了这样一个事实,即大多数表都有多个候选键,并且规范化考虑了每个候选键,而不仅仅是称为主键的“特殊”候选键。
这段视频还有很多其他问题——太多了,以至于我没有看完。生命太短暂,不能再浪费一分钟。