数据库设计问题, 比如我有一个投票表, 用于表示对文档投票, 有下面字段:
documentId  文档的ID,
userId,   用户ID
ratingDate 投票时间为什么不设计为 id, documentId, userId, ratingDate, id为自增字段设计表时什么时候要求有自增字段ID, 什么时候不需要自增字段ID

解决方案 »

  1.   

    看自己的喜好了,你这个也可以设计成有id的啊,但是我觉得你的表里如果能找到做主键的字段,一般就可以不用id,如果没有能做主键的或建索引的字段,可以加个自增的id字段
      

  2.   

    用自增列来做主键,相比复合列做主键,有如下好处: 
    1.性能高 
    2.灵活性好 
    3.开发便捷 
    -------------------------- 
    1.性能高是指多表连接时,   一个表的主键是多列的组合,   另一个表以此为外键,   那么这两个表做连接时的性能相比都以一个Number列来连接来说,   哪个的性能更好?   Buffer   Gets更低? 2.灵活性好是指当你用有意义的字段组合来表示主键时,   如果这些字段发生了变化,   对你的系统来说将是非常痛苦的事情,   比如用身份证号码来做主键,   那么身份证号码15位升18位,   那对你的系统来说将是一场灾难. 3.开发便捷是指,对于一个Table当你在代码中系统通过主键去定位一笔数据时,   你希望主键是单列的还是复列的?   如果是用in子句定位多笔呢
      

  3.   

    一般来说,实体定义表需要id伪列来区分实体,表示关系的表id伪列根据自己需要增加,觉得没必要可以不加.