数据库的主键应该选择什么数据类型比较好?

之前感觉都是在用 Int 作为 ID 自增,虽然之前也见别人用 varchar 作为 Id 但是并不理解,今天发现当一个表 A (新闻类别表)的主键为 int 的 ID,且为表 B(新闻表)的外键,我为表 B(新闻表)添加记录并不能直观的看出新闻类别 ID 所代表的类别,若要操作则会转个弯,通过 ID 得到类名,感觉效率不高,(其实是觉得很麻烦)。所以很想知道,数据库的主键用 varchar 好还是 int 好?亦或者是其他类型?

小花花
7个月前提问
1 个回答
  • 小花花

    主键的话我的建议是自增整形,不要使用与业务相关的名字,仅用 id 即可,而效率问题都可以用索引来解决。

    因为主键的不可变的特性,如果选择不慎,会在未来产生难以预期的问题。

    比如你用 int 型做文章的 id,但是如果在未来某一天文章数超过了无符号整形的最大值,你将没法将主键修改成 bigint。或者为了给用户起一个唯一 id 用了自增主键,但是如果未来有其他的项目用户要合并进来,他也是这么做的。这时候为了区分不同的项目可能要在这个用户 id 前加一个前缀,这时候也没法修改主键的值。主键之所以叫做主键就是到什么时候都不能改,所以最好的方案就是使用自增数字 id 做主键,并且不要给这个主键赋予一个业务相关的意义。

撰写答案
  • 相似问题