谁是身份专栏的第一创建者?那些创作者最初想要解决的问题是什么?背后有什么故事吗?
发布于 2018-11-27 22:38:21
你好,鲍勃,欢迎来到DBSE。
我假设(如果我错了请纠正我的话),您的问题不是关于Server或Oracle标识的特定属性,而是一般使用标识作为代理键的问题,这对于其他实现(如AUTO_INCREMENT、SEQUENCE、IDENTITY、GUID、OID作为设计选择)是正确的。
如果这就是你的意思,我向你致敬。大多数使用SQL的人从来不会停下来问这些问题,只是假设‘这就是它的方式’,因为每个人似乎都是这样做的。
这是一个有争议的话题,你会发现人们都有强烈的意见。快速搜索“天然密钥/人工密钥”将为你提供足够的阅读材料。
维基百科有一个好文章,可以让你开始工作。Joe还写了不少关于这个主题的优秀文章,您可以从这一个和这一个开始。
我还发现这个视频会话在这个问题上是娱乐和教育的。
我认为两者都是有效的解决办法。然而,我也看到大多数人不加区分地使用代理键,仅仅是因为找到正确的键并正确地对其建模是一项重大的工作,这需要掌握关系模型,这是很困难的。
不幸的是,这也是导致许多数据一致性、模块化、性能、编码和可管理性挑战的根本原因,这些挑战最终导致了非常困难和昂贵的纠正。
询问曾经尝试合并两个使用代理键的数据集的人。在这一点上,你别无选择,只能寻找自然的钥匙。但是,如果自然键从来没有被探索过,或者用唯一的约束进行了适当的约束,那么这些不一致和重复的元素通常是非常丰富的。
在我的设计中,我发现我对大多数的表都使用了自然键,并对代理项是有益的边缘情况进行了仔细的规划。这些设计选择在很大程度上是少数人的意见。
HTH
https://dba.stackexchange.com/questions/223588
复制相似问题