第一范式
First Normal Form
我刚开始做数据库设计,只是想问一个问题,看看我是否在正确的轨道上。有一个样本 table 需要分解为第一、第二和第三范式,并为每个范式绘制依赖关系图。但在此之前,我只是想检查一下我是否正确地完成了第一个范式
您的解决方案实际上是第二范式,因为您将教育数据移到了单独的 table 中。如果你只想成为第一范式,你可以将教育数据保留在员工 table 中,但在具有不同教育的行上重复所有员工信息,例如
1003 Willaker HS High School 1982 MKTG Marketing 23 Sales Agent
1003 Willaker BBA Bachelor (Bus) 1988 MKTG Marketing 23 Sales Agent
1003 Willaker MBA Masters (Bus) 1993 MKTG Marketing 23 Sales Agent
第一范式不是很有趣,因为所有这些重复;当我们规范化时,我们几乎总是从第二范式开始,就像你所做的那样。
第三范式将消除教育 table 中同时具有教育代码和教育描述以及员工 table 中的部门代码和部门名称的冗余。由于特定部门代码的部门名称始终相同,因此您应该有一个包含此关系 (MKTG => Marketing
) 的部门 table,并且只需将代码(或 ID)放入 Employee table.
我刚开始做数据库设计,只是想问一个问题,看看我是否在正确的轨道上。有一个样本 table 需要分解为第一、第二和第三范式,并为每个范式绘制依赖关系图。但在此之前,我只是想检查一下我是否正确地完成了第一个范式
您的解决方案实际上是第二范式,因为您将教育数据移到了单独的 table 中。如果你只想成为第一范式,你可以将教育数据保留在员工 table 中,但在具有不同教育的行上重复所有员工信息,例如
1003 Willaker HS High School 1982 MKTG Marketing 23 Sales Agent
1003 Willaker BBA Bachelor (Bus) 1988 MKTG Marketing 23 Sales Agent
1003 Willaker MBA Masters (Bus) 1993 MKTG Marketing 23 Sales Agent
第一范式不是很有趣,因为所有这些重复;当我们规范化时,我们几乎总是从第二范式开始,就像你所做的那样。
第三范式将消除教育 table 中同时具有教育代码和教育描述以及员工 table 中的部门代码和部门名称的冗余。由于特定部门代码的部门名称始终相同,因此您应该有一个包含此关系 (MKTG => Marketing
) 的部门 table,并且只需将代码(或 ID)放入 Employee table.