问一个基础问题? 多对多表是否需要自增id?

例如
有用户表: user 字段 id,name,xxx
有角色表: role 字段 id,name,xxx
用户角色表 :userrole 字段 : userid,roleid
1方案. roleid加userid 作为主键,无其他字段
2方案. userrole增加id字段,id做主键, roleid加userid 做UNIQUE索引

大家在实际项目中是如何选择的?
:roll:

事实证明 加一个非业务主键 绝对是正确的。我做过的项目基本都属于类似情况。

一个表的ID是否需要自增,与它是不是和别的表存在多对多关系应该是没有必然联系的,它只是一个主键的生成策略而已。

[quote]roleid加userid 作为主键,无其他字段[/quote]
一般都采用非业务键做主键,如果使用ORM的工具,建议不要使用联合主键。

这个根本就不需要主键的,要它有何用呢?你在实际中不可能给同一个人同一个role给多次的

利用Hibernate生成的表结构就是只有它们两个的id作为外键的

这种情况,我会选择方案1.

第一种方案足以