作者godead236 (科科彬)
看板Database
标题Re: [讨论] Key跟Foreign key的关联性
时间Tue Dec 16 23:09:10 2014
前文恕删
※ 引述《vity (逍遥盃-佛得)》之铭言:
: ※ 引述《drcgs (我心中尚未崩坏的地方)》之铭言:
: : Q3:什麻情况下才考虑栏位自动产生流水号?
: : 感谢大家教导
: 如果ptt没ID只有真实姓名, 就需要流水号才能辨认谁是谁, 因为会有同名同姓
: 如果ID可以不唯一, 例如可以有两个drcgs, 那也要流水号才能分别出两个drcgs
: 流水号 作者ID
: 1 drcgs
: 2 drcgs
: 资料已经有可以辨认谁是谁的就不需要流水号了, 反之就需要
: 一点浅见
建议primary key最好是使用流水号,不要让pk与商务逻辑有关系,这麽做有两个原因:
1.避免商务逻辑变动影响到pk, 例如:你使用身分证字号当作pk,万一有人身分证字号修改
了,你的pk也会跟着异动。由於大部份的资料库系统都是使用pk当作cluster index,
cluster index决定资料在硬碟的实际储存顺序,所以如果你的pk异动的话,资料的储存
顺序也会跟着异动
2.primary key会是index,使用流水号的话,资料型态是integer,效能会比较好
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 58.114.223.34
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Database/M.1418742552.A.218.html
1F:→ bohei: 使用流水号的话,当资料有删出、新增,流水号的连续就很难维 12/17 03:34
2F:→ bohei: 持了吧? 12/17 03:34
3F:→ talenttb: 一楼的case 连续流水号自己手动编 系统的变key 12/17 08:12
4F:推 GoalBased: 不连续会怎麽样吗? 影响还好吧 12/17 09:09
5F:推 gname: 推~ 12/17 09:17
6F:→ bohei: 不连续的话..会有爆炸的一天~ 12/17 10:01
7F:→ bohei: 也不是这样讲,是爆掉的机率比较大,如果删除新增很频繁的话 12/17 10:02
8F:推 GoalBased: 怕爆掉就考虑用bigint 12/17 12:58
9F:→ GoalBased: 约 10^20笔 12/17 12:59
10F:推 LINGZ: 流水号必须连续的坚持实在没必要,这是技术key而非业务key. 12/17 13:03
11F:→ LINGZ: 怕资料量过多爆掉,GoalBased的方法可用. 12/17 13:04
12F:推 bohei: 受教了!! 12/17 14:54