sql – 为主键选择数据类型时应该考虑什么?
当我创建新的数据库表时,我应该考虑哪些因素来选择主键的数据类型?
解决方法很抱歉这样做,但我发现我给相关问题的答案(你可以查看 this和 this)可以适用于这个.我把它们重塑了一下……你会发现很多关于这个问题的帖子,你会做出的每一个选择都有其优点和缺点.这些参数通常是指关系数据库理论和数据库性能. 关于这个问题,我的观点非常简单:代理主键总是有效,而自然键可能不会总是工作这些天,这有多种原因:字段太短,规则改变等. 到目前为止,您已经猜到我基本上是uniqueIdentifier / surrogate主键团队的成员,即使我欣赏和理解这里提到的论点,我仍然在寻找“自然”的情况.关键比代理更好…… 除此之外,支持这一基本规则的最重要但总是被遗忘的论据之一与代码规范化和生产率有关: 每次我创建一张桌子,我都会失去时间 >识别其主键及其物理特征(类型,大小) 我对所有这些问题的回答都是否定的: >当代理选项为我提供防弹解决方案时,我没有时间试图找出“最好的自然主键”. 所以我在过去的五年里一直在使用一个非常基本的规则:每个表(我们称之为’myTable’)都有第一个名为’id_MyTable’的字段,它是uniqueIdentifier类型.即使这个表支持“多对多”关系,其中字段组合提供了一个非常可接受的主键,我更喜欢创建这个’id_myManyToManyTable’字段作为uniqueIdentifier,只是为了坚持规则,因为,最后,它没有伤害. 主要优点是您不必再关心代码中主键和/或外键的使用.获得表名后,就会知道PK名称和类型.一旦知道数据模型中实现了哪些链接,您就会知道表中可用外键的名称. 如果您仍然希望在桌子的某个位置放置“自然键”,我建议您按照标准模型(如 Tbl_whatever id_whatever,unique identifier,primary key code_whatever,whateverTypeYouWant(whateverLengthYouEstimateTheRightOne),indexed ..... 其中id_是主键的前缀,code_用于“自然”索引字段.有些人认为code_字段应该设置为唯一.这是事实,可以通过DDL或外部代码轻松管理.请注意,计算了许多“自然”键(发票号),因此它们已经通过代码生成 我不确定我的规则是最好的.但这是一个非常有效的!如果每个人都在应用它,我们会避免时间丢失回答这类问题! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |