Dav*_*ell 7 database database-design normalization relational-database database-schema
这个问题显然是一个功课问题.我无法理解我的教授,也不知道他在大选期间所说的话.我需要逐步指示将下表归一化为1NF,然后是2NF,然后是3NF.

我感谢任何帮助和指导.
小智 20
好的,我希望我能正确记住所有这些,让我们开始......
为了使它们非常短(并且不是非常精确,只是为了让您初步了解它的全部内容):
列" state"的值类似于"WA,Washington".NF1被违反,因为这是两个值,缩写和名称.
解决方案:要实现NF1,请创建两列,STATE_ABBREVIATION和STATE_NAME.
想象一下,你有一个包含这4列的表格,表示汽车模型的国际名称:
COUNTRY_ID (数字,主键)CAR_MODEL_ID (数字,主键)COUNTRY_NAME (VARCHAR)CAR_MODEL_NAME (VARCHAR)该表可能包含以下两个数据行:
也就是说,模型"Fox"在美国被称为"Fox",但同样的车型在德国被称为"Polo"(不记得是否真的如此).
违反了NF2,因为国家/地区名称不依赖于车型ID和国家/地区ID,而只依赖于国家/地区ID.
解决方案:要完成NF2,请移至COUNTRY_NAME带有列COUNTRY_ID(主键)和的单独表"COUNTRY" COUNTRY_NAME.要获取包含国家/地区名称的结果集,您需要使用JOIN连接这两个表.
假设您有一张包含这些列的表格,表示状态的气候条件:
STATE_ID (varchar,主键)CLIME_ID (外键,像"沙漠","雨林"等气候区的ID)IS_MOSTLY_DRY (布尔)违反了NF3,因为IS_MOSTLY_DRY仅取决于CLIME_ID(至少假定为),而不取决于STATE_ID(主键).
解决方案:要完成NF3,将色谱柱MOSTLY_DRY放入气候区表中.
以下是关于练习中给出的实际表格的一些想法:
我应用上面提到的NF规则而不挑战主键列.但它们实际上没有意义,我们稍后会看到.
因此,如果删除所有违反NF2或NF3的列,则只保留主键(EMP_ID和DEPT_CD).剩下的部分违反了给定的业务规则:这种结构允许员工同时在多个部门工作.
让我们从远处回顾它.您的数据模型涉及员工,部门,技能以及这些实体之间的关系.如果你将其标准化,你最终将为员工提供一个表(包含DEPT_CD作为外键),一个用于部门,一个用于技能,另一个用于员工和技能之间的关系,持有"技能"年"对于EMP_ID和SKILL_CD的每个元组(我的老师会称后者为"关联实体").