开发者社区> 问答> 正文

为什么要尽量设定一个主键?

为什么要尽量设定一个主键?

展开
收起
请回答1024 2020-03-31 11:21:19 2769 0
2 条回答
写回答
取消 提交回答
  • Java程序员

    表中每一行都应该有可以唯一标识自己的一列(或一组列)。

    一个顾客可以使用顾客编号列,而订单可以使用订单 ID,雇员可以使用雇员 ID 或 雇员社会保险号。

    主键(primary key)一列(或一组列),其值能够唯一区分表中的每个行。 唯一标识表中每行的这个列(或这组列)称为主键。没有主键,更新或删除表中特定行很困难,因为没有安全的方法保证只设计相关的行。

    虽然并不总是都需要主键,但大多数数据库设计人员都应保证他们创建的每个表有一个主键,以便于以后数据操纵和管理

    表中的任何列都可以作为主键,只要它满足一下条件:

    1、任何两行都不具有相同的主键值 2、每个行都必须具有一个主键值(主键列不允许 NULL 值)

    主键值规范:这里列出的规则是 MySQL 本身强制实施的。

    主键的最好习惯: 除 MySQL 强制实施的规则外,应该坚持的几个普遍认为的最好习惯为:

    1、不更新主键列的值 2、不重用主键列的值 3、不在主键列中使用可能会更改的值(例如,如果使用一个名字作为主键以标识某个供应商,应该供应商合并和更改其名字时,必须更改这个主键)

    总之:不应该使用一个具有意义的 column(id 本身并不保存表 有意义信息)作为主键,并且一个表必须要有一个主键,为方便扩展、松耦合,高可用的系统做铺垫。

    来源:https://ruby-china.org/topics/26352

    2020-03-31 13:00:29
    赞同 展开评论 打赏
  • 主键是数据库确保数据行在整张表唯一性的保障,即使业务上本张表没有主键,也建议添加一个自增长的ID列作为主键。设定了主键之后,在后续的删改查的时候可能更加快速以及确保操作数据范围安全。

    2020-03-31 11:21:23
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载