Sri*_*.V. 2 sql database-design
在开发数据库设计时,在大多数情况下,我们习惯性地将主键设置为表中唯一标识符的整数类型.为什么不使用字符串或浮点数作为主键?这是否会影响值的可访问性,还是以简单的单词检索速度?有什么具体原因吗?
Emi*_*röm 11
整数将使用比字符串更少的磁盘空间,从而为您提供较小的索引文件以进行搜索.这对于希望尽可能多地在RAM中缓存索引的大型表非常重要.
此外,它们可以自动增量,因此您无需编写自己的例程来生成密钥.
您经常希望拥有一个技术密钥(也称为代理密钥),这个密钥仅用于标识行而不用于其他任何内容.由于您无法控制的原因,大多数数据可能迟早会发生变化,您不希望在任何地方更新数据.即使是像国家指定的个人身份证号码这样看似静态的数据也可能会发生变化(如果您获得新身份),或者可能会有法律禁止使用这些数据.但是,由您生成的密钥由您自己控制.对于这样的代理键是非常有用的一个小钥匙是容易产生.
至于"浮动作为主键":不要这样做.主键应唯一标识一行.浮点数没有相等关系,这意味着您无法安全地比较两个浮点值的相等性.这是浮点值的固有缺点.如果需要小数,请使用定点数字类型.