数据库设计的一些讨论

 

根据斑竹的推荐,数据库设计中不应有实际意义的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张表都被改好了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值