您的位置:首页 > 数据库

数据库设计的一些讨论

2009-04-20 19:32 274 查看
根据斑竹的推荐,数据库设计中不应有实际意义的id,但实践中却经常出现有业务意义的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张表都被改好了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: