数据库设计中,是不是尽量不要用自增类型做主键啊?

I_LOVE_YS 2015-07-29 01:34:29
数据库设计中,是不是尽量不要用自增类型做主键啊?

如果A表用自增(id)作为主键,B表关联A表表时,
是通过A表的Id作为关联的,假如我不小心把A表的
记录删除了,重新追加记录,这是Id变了,还要更
新B表,那多麻烦啊!!

对不对?
...全文
1200 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhu19774279 2015-07-31
  • 打赏
  • 举报
回复
引用 3 楼 ACMAIN_CHM 的回复:
设计原则是,如果表中的字段已经有可以充当主键的字段或者字段组,则不要再使用自增。
这一点似乎争议比较大,有支持无意义字段做主键的,也有支持用业务字段中的唯一字段做主机的
ACMAIN_CHM 2015-07-31
  • 打赏
  • 举报
回复
设计原则是,如果表中的字段已经有可以充当主键的字段或者字段组,则不要再使用自增。
rucypli 2015-07-30
  • 打赏
  • 举报
回复
一般不删数据,加个标志位
道玄希言 2015-07-29
  • 打赏
  • 举报
回复
这个问题, 见仁见智吧 既然你都已经用了自增做主键, 那作为外键关联的, 为啥不用关联的自增键? 既然ID能做外键使用, 那ID就应该唯一吧, 如果ID唯一了, 那也可以直接做主键吧。 再说,既然是建立关联表,你子表在创建外键索引的时候,指定好相应操作,就OK了。 MySQL支持外键的存储引擎只有InnoDB MYSQL在创建外键的时候,要求父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引。 在创建索引的时候,可以指定在删除、更新父表时,对子表进行的相应操作, 包括RESTRICT、NO ACTION、SET NULL和CASCADE。 RESTRICT和NO ACTION相同,是指在子表有关联记录的情况下父表不能更新; CASCADE表示父表在更新或者删除时,更新或者删除子表对应记录; SET NULL则是表示父表在更新或者删除的时候,子表的对应字段被SET NULL。

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧