据我了解,自然键的纯粹主义者和代理键的纯粹主义者之间正在进行一场战争。喜欢这篇文章(还有更多)的人说“自然键对你不好,总是使用代理......
但是,我要么是愚蠢的要么是盲目的,但我看不到总是拥有代理键的理由!
假设您在配置中有 3 个表,如下所示:
为什么我需要一个代理键呢?我的意思是没有它是完全有道理的。
另外,有人可以解释一下为什么主键永远不应该根据代理键纯粹主义者而改变吗?我的意思是,如果我说color_id VARCHAR(30)
并且 key is black
,并且我不再需要 black 因为我将其更改为charcoal
,那么为什么将black
key 更改为charcoal
以及所有引用列也是一个坏主意?
编辑:刚刚注意到我什至不需要更改它!只需创建一个新的,更改引用列(就像我对代理键所做的一样),然后让旧的保持平静......
在代理键咒语中,我需要然后创建额外的条目,比如id=232
和name=black
. 这对我有什么好处?我在桌子上有一把备用钥匙,我不再需要了。另外我需要加入以获得颜色名称,否则我可以留在一张桌子上并快乐吗?
请向 5 岁的孩子解释一下,请记住,我并不是要说“代理键不好”,我想理解为什么有人会说“总是使用代理键!”之类的话。