database-normalization - 对如何从 2NF 到 3NF 感到困惑
问题描述
如标题所述。我读过很多文章试图解决这个问题,但我仍然不确定我是否做对了。我想我已经掌握了窍门,但想获得更多意见,以防我确实需要纠正我正在做的事情。示例如下。谢谢!
1NF Employee_ID,姓氏,名字,街道,城市,邮编,出生日期,年龄,学位要求
2NF Employee_ID、姓氏、名字、出生日期、年龄、获得的学位 Location_ID、街道、城市、邮编
3NF Employee_ID、姓氏、名字、年龄 出生日期、出生日期 Location_ID 街道邮政编码、城市
解决方案
总结:2NF 是每个非键属性都依赖于整个主键。所以想象一张CD。CD 有一个 ID 号,它是主键。艺术家的姓名、艺术家和性别取决于主键。所以这是正确的:
Table_CD:
CD_ID: Name: Artist: Artist_Gender:
1 CD1 Artist1 Male
2 CD2 Artist1 Male
3 CD3 Artist2 Female
这对于 2NF 是正确的,因为艺术家依赖于密钥 (CD_ID)。我们不检查传递依赖。
在 3NF 中,您只是说不能依赖于不是关键的东西。艺术家的性别取决于艺术家。不在 CD_ID 上,这是关键。因此它不是 3NF。
要使其成为 3NF,您必须分离出传递依赖。因此,艺术家的性别。因此:
Table_CD:
CD_ID: Name: Artist:
1 CD1 Artist1
2 CD2 Artist1
3 CD3 Artist2
Table_Artist:
Name: Gender:
Artist1 Male
Artist2 Female
推荐阅读
- elasticsearch - Elasticsearch 索引占用太多空间
- angularjs - 如何在 laravel 中接收 formData?
- ajax - Javafx Webview 的 Ajax 调用失败
- python - 自定义权限未传递给通用视图 django rest
- http - 带有授权标头的 Dart http post 问题
- database - Oracle 数据库从 9i 迁移到 12c
- ssl - 将pem证书导入jmeter测试计划
- javascript - 使用 django 和 python 的动态网页
- apache-kafka-streams - 如何在 kafka 流应用程序中获得具有相同分区键和分区数的两个主题落在同一个使用者上
- excel - 在同一单元格中输入数据时如何将公式应用于单元格