免责声明:这与其他主题不是同一个问题。
使用自然键时我们面临的缺点之一是,如果业务逻辑发生变化并且我们需要更改一个键,则需要将这一更改传播到所有链接表。
然而,使用一个关于级联更新 https://stackoverflow.com/questions/1481476/when-to-use-on-update-cascade当我们更改键值时,我们可以让 DBMS 为我们传播更改。
我不明白的是:这种方法有什么缺点?有没有什么情况使用ON UPDATE CASCADE
对数据库有风险吗?
因为如果不是,那么如果在某种情况下,使用代理键的唯一原因是更改业务自然键更容易,那么ON UPDATE CASCADE
应该使用而不是将所有表转换为代理键。
代孕妈妈的优点..
如果您使用 REST,那么它需要资源标识符的概念。使用资源的一部分作为资源标识符可能很麻烦。在这种情况下,代理键并不是真正的代理,因为它成为现实世界的资源标识符,但这就是使用代理键模式的原因之一。
许多 ORM 工具通过代理更容易管理。无论好坏,OOP 要求身份概念与价值保持分离。在很多方面,这与第 1 点类似。
如果更改关键属性,您只需更改一张表即可。另一方面,如果您希望保持引用完整性,代理不能将自然复合键转换为简单键。例如,文档(UserId,FolderId)引用文件夹(UserId,Id)可以防止用户将其文档放入其他人的文件夹中,而文档(FolderId)引用文件夹(Id)则不能将其放入其他人的文件夹中。但使用代理至少限制了对结构决策的强制性彻底改变,而不仅仅是某人在几个候选键中进行选择。
我不会列出自然键的优点,因为我认为它们是显而易见的。少即是多。替代品是需要论证的概念。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)