根据斑竹的推荐,数据库设计中不应有实际意义的id,但实践中却经常出现有业务意义的id,
如:
create table users (
user_id varchar(10),
user_password varchar(10));
这个表,大多都是使用user_id作为主键,如果不用它做主键,那就要增加一个字段 id 作为字段,而且还要对 user_id 作唯一性索引,似乎会有效率上的损失,不知各位的看法...
如:
create table users (
user_id varchar(10),
user_password varchar(10));
这个表,大多都是使用user_id作为主键,如果不用它做主键,那就要增加一个字段 id 作为字段,而且还要对 user_id 作唯一性索引,似乎会有效率上的损失,不知各位的看法...
第一,不会有效率损失
第二,在你这种情况下,使用user_id做主键,会非常糟糕!
举一个实际的例子,拿本论坛来说,前不久一个版主要我帮他改他的user_id。但是user表关联了另外3个表,也就是说,实际上user表的主键同时作为其他3个表的外键。假设我用user_id做了主键,那么我修改这个版主的user_id的话,我需要同时修改4个表,修改很多条记录。而由于本论坛使用了无业务意义的id做主键,user_id只是唯一性约束的字段,因此我只需要修改user表这一个记录的user_id值,那么就OK了,所有关于这个版主的信息的4张表都被改好了。