一般是表里找不到主键 or 需要某种顺序才 添加一个 ID。

解决方案 »

  1.   

    除上面说的外,在数据仓库中还大多用来做代理键。
    例如有些类型是字符型的或者日期型的,可以给它一个整型的id,然后在最大的一张表中可以将该id写进去,而不是写对应的一串字符。
    当该字符数值改变时,也只需修改小表中的信息,大表中的数据是不需要动它的,这也可以大大降低维护的效率。
    其实这种设计在许多oltp系统种也是常见到的
      

  2.   

    这种设计是很有用的,选择与业务逻辑无关的字段做主键是有好处的
    谁也没有办法保证业务逻辑不会发生改变。
    在Oracle中一般使用Sequence方式来生成ID,效率可能比触发器好一点,但是需要手工维护。