我是否应该使用每个相关表的外键或不应该使用外键? 如果我应该使用,为什么?
答案 0 :(得分:8)
你应该。有三个要点:
答案 1 :(得分:7)
“所有相关表格”并不总是很清楚,因此情况并不明显。可能存在具有公共列但可能永远不会看到彼此的表。
但是,防止错误超过主要防御并允许输入的数据不易追踪是很方便的。
如果您拥有适当的索引,它们无助于提高查询效率,并且一个好的应用程序将过滤输入足以永远不需要它们的输入。但是错误发生了,它们是一种廉价的防线。
如果您对设计数据库感到满意,那么一旦您建立了基本的父/子关系,就不会花费大量时间来担心和精炼细节。
这是一些背景 -
答案 2 :(得分:7)
使用外键是关系数据库的主要概念之一(如果不是唯一的话)。你当然应该在需要时使用外键。因为这有助于:
第一个意味着不是手动将值添加到一个字段,而该字段将重复用于您从相关主键表中选择的其他记录。如果您尝试在另一个表中输入不存在的主键,则会被拒绝(在某些数据库中,您可以调整此行为)。
第二个意味着你不必每次都写“美利坚合众国”,这比仅仅写“美利坚合众国”的ID需要更多的空间。
答案 3 :(得分:6)
是。但在适度的水平。这有助于查询数据。它有助于索引数据,从而加快查询速度。它还有助于维护实体之间的关系。
答案 4 :(得分:5)
是的,你应该。外键只是约束,它可以帮助你建立关系,并确保你的数据库中有正确的信息。你应该使用它们来防止不正确的数据输入。
答案 5 :(得分:3)
这意味着有时候假设立即数据一致性是不合理或不合理的。
如果您有兴趣,可以阅读基于NoSQL的数据库,MongoDB CouchDB和平均一致性。
对于我们受过关系训练的人来说,理解它有点奇怪,但很多大型网络解决方案需要牺牲可用性或分区容忍度。