没有合适的资源?快使用搜索试试~ 我知道了~
数据库主键的五种设计方法
需积分: 50 8 下载量 72 浏览量
2009-03-10
11:33:53
上传
评论
收藏 31KB DOC 举报
温馨提示
试读
2页
介绍数据库中主键设计的方法,以及各种方法的优点和缺陷。希望大家喜欢
资源详情
资源评论
资源推荐
数据库主键设计之思考
这边文章是我在网上 down 的,感觉说的很有好。所以跟大家分享一下。
主键的必要性:
有些朋友可能不提倡数据库表必须要主键,但在我的思考中,觉得每个表都应该具有主键,不
管是单主键还是双主 键,主键的存在就代表着表结构的完整性,表的记录必须得有唯一区分的字段,
主键主要是用于其他表的外键关联,本记录的修改与删除,当我们没有主键时,这些 操作会变的非
常麻烦。
主键的无意义性:
我强调主键不应该具有实际的意义,这可能对于一些朋友来说不太认同, 比如订单表吧,会有“订
单编号”字段,而这个字段呢在业务实际中本身就是应该具有唯一性,具有唯一标识记录的功能,但
我是不推荐采用订单编号字段作为主键 的,因为具有实际意义的字段,具有“意义更改”的可能性,
比如订单编号在刚开始的时候我们一切顺利,后来客户说“订单可以作废,并重新生成订单,而且订
单 号要保持原订单号一致”,这样原来的主键就面临危险了。因此,具有唯一性的实际字段也代表
可以作为主键。因此,我推荐是新设一个字段专门用为主键,此主键 本身在业务逻辑上不体现,不
具有实际意义。而这种主键在一定程序增加了复杂度,所以要视实际系统的规模大小而定,对于小
项目,以后扩展不会很大的话,也查允许用实际唯一的字段作主键的。
主键的选择
我们现在在思考一下,应该采用什么来作表的主键比较合理,申明一下,主键的设计没有一个定论,
各人有各人的方法,哪怕同一个,在不同的项目中,也会采用不同的主键设计原则。
第一:编号作主键
此方法就是采用实际业务中的唯一字段的“编号”作为主键设计,这在小型的项目中是推荐这样
做的,因为这可以使项目比较简单化,但在使用中却可能带来一些 麻烦,比如要进行“编号修改”时,
可能要涉及到很多相关联的其他表,就象黎叔说的“后果很严重”;还有就是上面提到的“业务要求允许
编号重复时”,我们再 那么先知,都无法知道业务将会修改成什么?
第二:自动编号主键
这种方法也是很多朋友在使用的,就是新建一个 ID 字段,自动增长,非常方便也满足主键的原则,
优点是:数据库自动编号,速度快,而且是增量增长,聚集型主键按顺序存放,对于检索非常有利;
数字型的,占用空间小,易排序,在程序中传递也方便;如果通过非系统增加记录(比如手动录入,
或是用其他工具直接在表里插入新记录,或老系统数据导入)时,非常方便,不用担心主键重复问题。
缺点:其实缺点也就是来自其优点,就是因为自动增长,在手动要插入指定 ID 的记录时会显得
麻烦,尤其是当系统与其他系统集成时,需要数据导入时,很难保 证原系统的 ID 不发生主键冲突
(前提是老系统也是数字型的);如果其他系统主键不是数字型那就麻烦更大了,会导致修改主键数据
类型了,这也会导致其他相关 表的修改,后果同样很严重;就算其他系统也是数字型的,在导入时,
为了区分新老数据,可能想在老数据主键前统一加一个“o”(old)来表示这是老数据, 那么自动增长
的数字型又面临一个挑战。
liuenyuan
- 粉丝: 0
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- DSP开发实战教程-国产DSP替代进口TI DSP的使用技巧 进芯DSP替换文件
- 植被恢复能力估算python代码(KNDVI代码).zip
- 基于java打造的深度学习框架,帮助你快速搭建神经网络,实现模型推理与训练,引擎支持自动求导,多线程与GPU运算
- 界线与不动产测绘智能计算经纬度及标注软件
- CANOPEN使用方法与教程
- 极影毁片圆 · 电脑字体设置.zip
- 同态加密部分算法实现Homomorphic-Encryption-main.zip
- helib同态加密socket通信helibsocket-master.zip
- pll_inst.vhd
- 快速入门同态加密homomorphic-encryption-master.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0