数据库设计 – 每个表都应该有一个单字段代理/人工主键吗?
我理解代理/人工密钥的一个好处 – 它们不会改变,这可能非常方便.无论是单场还是多场,都是如此 – 只要它们是“人造的”. 但是,将自动递增整数字段作为每个表的主键有时似乎是一个政策问题.拥有这样一个单字段密钥以及为什么(或者为什么不是),这总是最好的主意吗? 要明确的是,这个问题不是关于人工与自然 – 而是关于所有人工关键是否应该是单场的 解决方法我会说不,不总是,但大部分时间都是.在某些情况下,您不需要代理或人工密钥: >纯交叉表.如果没有风险的话 在某些情况下,旧忠实单调递增的整数代理键不理想.您可以拥有字母数字代理的密钥.这些可能包括: >您需要合并多个独立数据的情况 为什么大部分时间都是?这个问题的最根本的答案是,如果你需要修改任何表上的主键值,它就是纯粹的地狱.由于用户可以看到或触摸的几乎任何东西都可能在某些时候受到更新,因此使用可见的键值会引发纯粹的地狱.使用代理键可以防止您陷入此陷阱. 话虽如此,请记住,YAGNI有应用这个概念的空间.您不需要将具有IDENTITY键的代码表强制插入到模式的每个角落中,以防万一有人决定您员工表中男性性别的符号需要从M更改为X或傻. (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |