首页新闻找找看学习计划

自动编号id,自定义编号,作为数据库主键关连字段哪个好?

0
[已解决问题] 解决于 2018-08-27 13:46

很多时候,设计表

学生表

stuid(自增),stuno(带有可读信息的编号),stuname(学生姓名),...

学生选课表

一,id,stuid,cid(课程id),selecttime

-----------------

二,id,stuno,cid(课程id),selecttime

 

我看网上相关文章认为 主键应该遵循的原则

主键应当是对用户没有意义的 也就是说要选用stuid

但是很多时候,无论是前台查询,还是分析数据库查错等。都感觉没有使用stuno方便。

对于这个问题,大家在设计数据库时,会选哪一个种?

 

 

问题补充:

比如选择了stuid作为关连字段。

这时候业务人员说,你给我查一下stuno为S20180001的学生,总部选了几门课。

这时候你先要查出 stuno为S20180001的学生的 stuid,比如stuid为188

这时候,你在

select * from stuselect_course where stuid=188

--------------

如果你用的stuno 那就简单很多。

---------

这个纠结的问题,类似的比如订单表,订单表,由于很多原因,业务需要生成一个带有可读信息的一个字符串作为订单编号比如BJ2081071800001。而不是用id,1,2,3..给用户看。

 

飞阿飞的主页 飞阿飞 | 菜鸟二级 | 园豆:444
提问于:2018-07-18 13:37
< >
分享
最佳答案
0

学生表主键的选择对整个系统影响比较大,后面很多表都会参考学生表。个人觉得,学生表的主键还是用stuid比较好, 不建议用 stuno 做主键。原因:(1)主键一般都是聚集索引,数字字段索引更快。(2)用stuid做主键方便业务变更时,更方便。比如,stuid做主键,当修改stuno时只需修改学生表;当stuno需要加长时,也只需修改学生表。

奖励园豆:5
大豆男生 | 小虾三级 |园豆:603 | 2018-07-18 15:23
其他回答(3)
0

stuid.无论是前台查询,还是分析数据库查错等你可以使用stuno.传参不同而已。

昵称被喵掉了 | 园豆:60 (初学一级) | 2018-07-18 13:41
0

如果你确定编号唯一的话,那你就用编号当主键就好了,抛开业务场景谈设计都是扯淡

、熙和 | 园豆:1486 (小虾三级) | 2018-07-18 13:50

有道理,只要确认stuno是生成之后就不变的,其实用这个更省事。

支持(0) 反对(0) 飞阿飞 | 园豆:444 (菜鸟二级) | 2018-07-18 13:52
0

只要你的表有个唯一的标示就可以 这个方便以后的一些处理

竜咚咚 | 园豆:742 (小虾三级) | 2018-07-18 13:53

很多的时候,我们除了唯一标识之外,都还喜欢在多一个自动编号id

到于这个id有什么用?没有也可以,但我更喜欢加上。

支持(0) 反对(0) 飞阿飞 | 园豆:444 (菜鸟二级) | 2018-07-18 13:55

@飞阿飞: 主键 自增  其实设计库 还是根据业务来的嘛  只要业务处理没什么问题  你的库 还不是你说了算

支持(0) 反对(0) 竜咚咚 | 园豆:742 (小虾三级) | 2018-07-18 14:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册