转oldwain(老斗)的回复:问题的关键在于: 为什么要增加这个id? 它既然是一个"内部编码", 就说明它并不是一个业务规则中使用到的. 在a,b已经具有很好的唯一标识的作用下, 加id没有丝毫必要.如果加入id是为了应用实现的方便(或者性能优化), 那么已经属于人为denormalize了, 没必要把一个为了实现方便(或者性能优化)而denormalize的设计再次normalize.
 
===========================
oldwain
---------------------------
http://www.itpub.net/index.php?referrerid=32 
http://www.linuxforum.net/forum/postlist.php?Cat=&Board=oracle
http://www.oraclefan.net/ 下载 ITPUB免费电子杂志: 
http://www.itpub.net/forumdisplay.php?s=32&forumid=9

解决方案 »

  1.   

    因為a,b,c不是 mutal independent, 而其中c是由function(a,b)得出, 故c不算
    是一個根本的attribe.
      

  2.   

    mutal independent是什么意思?那加入id(只是作为一个序列号)后究竟要不要再分解?有没有理论证明?
      

  3.   

    原表只设A为主键就不大妥当,A、B合起来唯一表示,应该A、B都为主键
    而且没有必要加ID,ROWNUM就是ID,有OID就可以了
      

  4.   

    rowid不和记录对应,不能通过rowid得到想要的行。
    我觉得老斗的答案比较合理