自增长primarykey采用自增长primarykey主要是性能
早期的数据库系统,经常采用某种编号,比如身份证号码,公司编号等等作为数据库表的primarykey
然而,很快,大家就发现其中的不利之处
比如早期的医院管理系统,用身份证号码作为病人表的primarykey
然而,第一,不是每个人都有身份证;第二,对于国外来的病人,不同国家的病人的证件号码并不见得没有重复
因此,用身份证号码作为病人表的primarykey是一个非常糟糕的设计
考虑到没有医生或者护士会刻意去记这些号码,使用自增长primarykey是更好的设计
公司编号采用某种特定的编码方法,这也是早期的数据库系统常见的做法
它的缺点也显而易见:很容易出现像千年虫的软件问题,因为当初设计数据库表的时候设计的位数太短,导致系统使用几年后不能满足要求,只有修改程序才能继续使用
问题在于,任何人设计系统的时候,在预计某某编号多少位可以够用的时候,都存在预计不准的风险
而采用自增长primarykey则不存在这种问题
同样的道理,没有人可以去记这些号码
使用自增长primarykey另外一个原因是性能问题
略有编程常识的人都知道,数字大小比较比字符串大小比较要快得多
使用自增长primarykey可以大大地提高数据查找速度
避免用复合主键(compoundprimarykey这主要还是因为性能问题
数据检索是要用到大量的primarykey值比较,只比较一个字段比比较多个字段快很多
使用单个primarykey从编程的角度也很有好处,sql语句中where条件可以写更少的代码,这意味着出错的机会大大减少
双主键双主键是指数据库表有两个字段,这两个字段独立成为主键,但又同时存在
数据库系统的双主键最早用在用户管理模块
最早的来源可能是参照操作系统的用户管理模块
操作系统的用户管理有两个独立的主键:操作系统自