如题!

解决方案 »

  1.   

    建唯一约束和非空约束、读取速度慢问题...
    LZ所说也很有道理,小弟认为就像你所说建立相关序列同时也建立索引,当然库只有100多张表,库并不是很大,建议还是建立主键以及相关索引(项目应考虑PL-SQL 效率嘛)
      

  2.   


    既然楼主不愿意创建主键,那么想必通过唯一约束和非空约束来替代主键的方式,楼主更不会考虑了,更麻烦,楼主考虑这几种情况么:
    1. 如何更新数据库的某一条数据,既不存件主键也不存在唯一约束,楼主如何定位到具体的某一条唯一的记录,特别是经常碰到的问题类似存在则更新不存在则插入这样的问题。如果楼主的系统中不需要唯一的记录,那么在查询结果中,哪条结果才是真正需要的结果如何分辨2. 不存在主键,那么意味着所有列都可以容易更新,也就是说今天看见的数据,明天可以由于误操作或者其他原因不见了,楼主怎么查找类似这样的问题。在存在关联关系的表上,如果更新了有关的字段,而不更新存在关联关系的表的相关字段,那么将来数据核对起来是一件多么困难的事情3. 楼主也许相让程序来实现这个唯一非空限制,那么楼主想过并发操作么,也许两个用户同时在更新/插入,或者由于网络延时或者由于CPU时间片的分配问题,或者其他各种各样的问题,导致同样的记录通过程序的检测进入数据库。4. 楼主考虑过项目过程中,可能出现手工填补数据的问题么,总不能要求手工填补数据的人员每次插入或者更新数据的时候都先查询一次数据库,就算这样还存在并发操作的问题呢,也许两个手工填补数据的人员同时插入同样的记录,或者手工填补的记录和系统插入同样的记录。... 可能的情况太多了,偶说不动了楼主所说的通过程序控制唯一和非空,无非就是存在轮子的时候,重新费力造一个轮子,和花在程序修改、调试的时间上比,增加主键不是更简单的事情么
      

  3.   

    既然楼主不愿意创建主键,那么想必通过唯一约束和非空约束来替代主键的方式,楼主更不会考虑了,更麻烦,楼主考虑这几种情况么:
    1. 如何更新数据库的某一条数据,既不存件主键也不存在唯一约束,楼主如何定位到具体的某一条唯一的记录,特别是经常碰到的问题类似存在则更新不存在则插入这样的问题。如果楼主的系统中不需要唯一的记录,那么在查询结果中,哪条结果才是真正需要的结果如何分辨2. 不存在主键,那么意味着所有列都可以容易更新,也就是说今天看见的数据,明天可以由于误操作或者其他原因不见了,楼主怎么查找类似这样的问题。在存在关联关系的表上,如果更新了有关的字段,而不更新存在关联关系的表的相关字段,那么将来数据核对起来是一件多么困难的事情3. 楼主也许相让程序来实现这个唯一非空限制,那么楼主想过并发操作么,也许两个用户同时在更新/插入,或者由于网络延时或者由于CPU时间片的分配问题,或者其他各种各样的问题,导致同样的记录通过程序的检测进入数据库。4. 楼主考虑过项目过程中,可能出现手工填补数据的问题么,总不能要求手工填补数据的人员每次插入或者更新数据的时候都先查询一次数据库,就算这样还存在并发操作的问题呢,也许两个手工填补数据的人员同时插入同样的记录,或者手工填补的记录和系统插入同样的记录。... 可能的情况太多了,偶说不动了楼主所说的通过程序控制唯一和非空,无非就是存在轮子的时候,重新费力造一个轮子,和花在程序修改、调试的时间上比,增加主键不是更简单的事情么