`
javahigh1
  • 浏览: 1225095 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

数据库表设计关于"主键"选择乱谈

 
阅读更多

现在做项目总离不开主流的关系数据库,当然也就免不了对数据库表的设计,这里如何对数据库进行设计当然还轮不到我这个半斤八两的人在这里高谈阔论,我只想谈谈我对数据库主键选择的一些看法.

一些比较老一点的设计师都有一个习惯,那就是喜欢把业务上唯一的字段或复合字段作为数据库表的主键,所谓业务主键,打个比方,数据库表有姓名,性别 ,年龄 ,电话,四个字段,在这里,假设姓名是唯一的,那么,我们就把姓名作为数据库的主键.但是这个设计有一个问题,那就是,假设需求突然变化,可以允许同名出现,那么就不得不重新设计主键,这种改动主键的做法可能会对上层应用伤胫动骨.当然一般来讲,主键的变动意味着业务的变动,一般也会设计到应用重新设计. 但是从另外一个角度来讲,我们何不开始就预防呢,如果采用和业务无关的主键,那么不管以后业务如何动,我们的主键关系至少可以不动,岂不是更好.同时,业务上的哪些字段需要唯一,可以通过定义约束来实现,如果采用O/R映射,那么可以将业务唯一通过对equals()和hashCode()进行覆盖解决.

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics