首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >外键位置

外键位置
EN

Database Administration用户
提问于 2022-05-05 12:18:33
回答 4查看 88关注 0票数 0

这是硕士学位的问题。

对图像中描述的问题的正确回答是什么,以及为什么?

或者你认为可能有多个正确的答案?

EN

回答 4

Database Administration用户

发布于 2022-05-05 12:46:04

在关系数据模型中,最好避免尽可能多地使用可空外键。

假设每个许可证都有一个持有者,而一个人可以拥有一个许可证,这意味着外键应该进入表示许可证的表中,因此它是一个null属性。

票数 3
EN

Database Administration用户

发布于 2022-05-05 14:11:41

许可证与人有着完全的参与关系--尽管它不是一个弱实体(它有自己的主密钥,LicenseNumber),但没有相应的、单一的人,它就不可能存在。若要强制执行此约束,必须在许可证中声明外键以引用该人。

票数 2
EN

Database Administration用户

发布于 2022-05-06 10:55:10

根据图表:

  1. 该人可能持有“零或一”许可证。
  2. 许可证必须有“一人唯一”的人

因此,理想情况下,只能在许可证上输入外键,因为在理想的情况下,我们希望在任何时候都使用有效的主键值填充所有外键。

原因如下:

  1. 这允许我们(如果适当的话)强制执行外键约束,这些约束将通过非常高效的主键查找进行物理实现。
  2. 它允许在实际的关系数据库管理系统实现中实现最佳的查询计算和I/O效率。

然而..。

如果你面对的是现实世界中有人创建了一个可空的外键.不要烦恼,除非它已经导致了一个现实世界的问题。可空外键比您想象的更常见:https://stackoverflow.com/a/1723839/19051559

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/311706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档