每当我设计数据库时,我都会自动为每个表(查找表除外)自动生成一个GUID主键。
我知道我永远不会因重复的键,合并表等而失眠。对我而言,从哲学上讲,任何给定的记录在所有域中都应该是唯一的,并且唯一性应该在表与表之间以一致的方式表示。
我意识到这永远不是最有效的选择,但是撇开性能,我想知道是否有反对这种做法的哲学观点?
根据回答,让我澄清一下:
我说的是始终使用GUID代理键作为主键,而不管表上是否设计了自然键或顺序键。这些是我的假设:
杰夫·阿特伍德(Jeff Atwood)对此进行了详细讨论:http : //www.codinghorror.com/blog/2007/03/primary-keys-ids-versus- guids.html
Guid Pro: 在每个表,每个数据库,每个服务器上都是唯一的 允许轻松合并来自不同数据库的记录 允许在多个服务器之间轻松分发数据库 您可以在任何位置生成ID,而不必往返于数据库 大多数复制方案始终需要GUID列
指导意见: 它比传统的4字节索引值大4倍;如果您不注意 Cumbersome进行调试,则这可能会对性能和存储造成严重影响(其中userid =’{BAE7DF4-DDF-3RG-5TY3E3RF456AS10}’) 生成的GUID应该部分顺序以获得最佳性能(例如, SQL 2005)并启用聚集索引的使用