`
ytuwlg
  • 浏览: 91235 次
  • 性别: Icon_minigender_1
  • 来自: 威海
社区版块
存档分类
最新评论

数据库设计 逻辑主键

    博客分类:
  • DB
阅读更多

在数据库设计中我们经常会存在是否为表建立逻辑主键(代理主键)的问题。

使用逻辑主键的好处:

 


1.业务系统中需要关联时使用逻辑ID进行关联--而不是有业务ID做关联--使业务系统具有最大的灵活性,及业务ID也是可以修改的,如果使用业务ID做主键,则该条记录就不能被修改。但是这种情况时有发生。
例如:现在客户所有产品编号要升级在原来基础上加上分公司编号。如果系统采用逻辑ID关联则可以方便的修改产品编号。否则的话


2.优化了表的设计,避免使用联合主键。

 

3.进行多表查询时可以通过关联逻辑ID来提升性能.

 

4.逻辑ID一般采用整形,业务ID通常使用字符类型。整形相对与字符类型无论在建立索引还是外键关联查询效率要高的多。

 

5.使用Hibernate等ORM工具时,获得一些性能提升。(这也是Hibernate所推荐的)

 

6.至于业务ID的唯一性约束可以通过唯一性索引来约束


下面引用论坛上的一些片段:

  

 

 

引用
在对象建模时也有逻辑主键,只是隐含了而已。一个逻辑主键的意思就是对象实例的唯一性,简单地说,人的身份证号码是业务主键,而具体的人则隐含着一个逻辑主键,也就是说不管出现什么样的情况,你还是你(当然不要跟我讲克隆, )。
   在做建模的时候我们当然不会考虑这个问题,因为它和实例有关系,和对象(指的是建模层的对象,不是类的实例)是没有关系的,所以在做建模时是不会考虑的。这也就是我们为什么叫它逻辑主键的意思(表明它在现实领域是看不到,但是是逻辑存在的)。
    再将上面的例子反应到计算机领域,如果拿业务主键身份证作为人的唯一判断,那么就出现了一个问题,所有引用改身份证的地方,如果出现了身份证的改动(客观存在,谁的身份证都升了位),那么将带来很大的麻烦(这种麻烦在现实领域好处理,并且有足够的时间进行处理,但是在计算机领域就不简单了)。
    我的建议:对于业务数据,是需要采用逻辑主键的,对于基础数据,基于多方面考虑,是可以采用业务主键的。

 

引用

   逻辑主键的作用只是关联引用,没有任何别的作用,而在表内的唯一性是通过业务唯一性(建立唯一约束)来保证的。
    我是提倡业务数据采用逻辑主键,基础数据可以根据实际情况采用业务主键的(这里所谓的业务主键并不是业务数据,而是所称的比如国家,货币,城市代码等等之类)。
    我从来不是那种走极端的,因为如果一味全部用逻辑主键,在处理复杂业务的时候,就真的很麻烦了,因为一张业务表往往关联更多的基础表。但是,在业务表里也用所谓的业务主键,那就更差了(基础的东西往往很少改,即算要改,都是有比较长的时间量,并且都是为大家所共知的;而业务的东西,是每一个做软件的最薄弱的,并且是最有可能受到客户影响的,也会是最会引起问题的)。

 

引用

   只要是由用户维护的数据,信息系统就不能假设它不会变。很简单,用户维护的时候会出错。出错了就要改。逻辑主键应该是指没有业务含义,没有业务用途,因此不需要用户维护,甚至不需要给用户看的。因此它也就绝对不会变。这才能真正满足主键“唯一,不变”的要求。

 

引用

   业务主键一般不会是单独的一个字段,那么,在这种主从关系中,是很痛苦的
尤其是我们做的ERP系统,经常会有多层的级联 H-MD-MD这样的结构,如果使用业务主键,简直是不可想象的
所以,基本上都是UUID作为主键



最后,如何在运行效率,开发效率以及维护上找个平衡点是关键!!!

 

分享到:
评论

相关推荐

    自己动手设计数据库

    《自己动手设计数据库》主要讲述数据库的设计,讨论了如何建立表结构、确定主键、设置字段说明、建立表关系、确立业务规则、建立视图和各层次的数据完整性,以及如何避免不好的设计等问题。《自己动手设计数据库》...

    自己动手设计数据库.[美]Michael J.Hernandez(带详细书签) PDF 下载 高清 完整版

    第二,作者高度重视数据库的逻辑设计,严格区分逻辑设计和实现阶段,以确保高效、成功地设计良好的数据库。 《自己动手设计数据库》适合数据库初学者、有经验的数据库开发人员,以及所有对数据库设计感兴趣的读者...

    数据库设计培训.pptx

    数据库设计概述 什么是数据库设计 数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,...

    数据库设计模板.docx

    数据库系统 数据库部署环境 数据库设计工具 数据库存放位置 说明 数据库的命名规则 数据库名称:时代集团的英文名称time-group 表名:英文(表的用途)+下划线+英文 字段名:相关属性的英文名 逻辑设计 数据库设计...

    数据库设计与优化.pdf

    以下是性能要求设计阶段需要注意的: 1.3.1 数据库逻辑设计的规范化 数据库逻辑设计的规范化就是我们一般所说的范式,我们可以这样来简单理解范式: 第 1 规范:没有重复的组或多值的列,这是数据库设计的最低要求...

    数据库设计:逻辑结构设计.pdf

    关系范式是关系模式满足不同程度的规范化要求的标准, 是数据库逻辑设计 的指南和工具 关系规范化的前三个范式原则如下: 第一范式:若一个关系模式 R 的所有属性都是不可再分的基本数据项,则该 关系模式属于第一...

    数据库课程设计.教务管理系统

    3. 逻辑结构设计 () 3.1. 类和对象向关系模式转换 () 3.2. 关系模式优化 () 4. 数据库物理结构设计 () 4.1. 存取方法设计 () 4.2. 存储结构设计 () 4.3 物理设计 () 5. 数据库完整性设计 () 5.1. 主键及唯一性索引 ...

    数据库设计--驿站超市

    从需求分析,到概念设计和逻辑设计,E-R图的表示,数据字典的创建,懂得了不少有关数据库开发过程中的知识,在实验中建表,及其关系模式,关系代数的建立及理解,将SQL语言的查询语句用得淋漓尽致,增强了自己在...

    政务平台数据库设计.doc

    逻辑设计 数据的逻辑分类 目前,省级政务管理平台中共包括四类逻辑存储单元:组织机构用户管理数据库、权 限访问控制管理数据库、业务表单构建数据库和业务流程构建数据库,分别用来存储平 台的基础配置数据、业务...

    网上购物系统数据库设计.doc

    字段时间格式:所有时间格式采用2012-5-12的形式 1.1.1 数据库逻辑设计 数据路设计图 1.1.2 数据字典 系统管理员表(tb_Admin):管理系统管理员账号和密码的表,主要属性有:用户名 和密码。系统管理员根据用户名...

    软件数据库设计模板.docx

    数据库环境说明 描述本设计需采用的数据库系统,设计工具,编程工具以及配置等 逻辑结构设计 数据库设计人员根据需求文档,创建与数据库相关的那部分实体关系图软件数据库设计模板全文共6页,当前为第5页。...

    高校教师信息管理系统 数据库系统设计

    2.2逻辑结构设计: 下面将E-R图转换为关系模型: 员工信息(员工编号,员工姓名,年龄,性别,出生年月,婚姻状态,政治面貌,学历,部门编号,职务,联系方式,备注) 主键:员工编号; 外码:部门编号; 部门信息...

    进销存的数据库设计文档.doc

    物理设计 5.1销售人员信息表 "字段名称 "数据库字段名 "数据类型 "是否为主键 "备注 " "销售人员ID "SalemanID "Char(10) "是 "销售人员的编 " " " " " "号 " "姓名 "Salename "varchar(50) "否 "姓名 " "密码 ...

    数据库系统设计实验报告.doc

    实验原理和步骤 利用数据库设计的4个阶段:需求分析(分析用户要求)、概念设计(信息分析和定义) 、逻辑设计(设计实现)和物理设计(物理数据库设计)。需求分析采用自顶向下,概念模 型设计时采用自底向上的方法,即自顶...

    图书管理系统数据库详细设计.pdf

    借书证号、书的编号、借出日期、归还日期、推迟日 期、应罚款总额 主键:借书证号、编号 (2)管理员与图书关系 属性:管理员编号 、书的编号、销毁日期、销毁数量 主键:管理员编号、图书编号 2、数据库逻辑结构 ...

    浅谈数据库设计方法.doc

    浅谈数据库主键设计的原则[J].电脑知识与技术,2011,22(36):12- 16. [2]熊慧芳.数据库主键的设计方法探讨[J].无线互联科技, 2013,32(07):54- 57. [3]张立伟,唐伟.浅谈ABAP程序的优化[J].科技致富向导, ...

    数据库设计说明书模板

    数据库设计说明书 版本:V1.0 文 档 编 号 保 密 等 级 作 者 最后修改日期 审 核 人 最后审批日期 批 准 人 最后批准日期 修订记录 日期 版本 修订说明 修订人 目 ...

    学生宿舍管理系统数据库设计.docx

    最后,可以方便地切换到数据库系统的逻辑模式,方便了用户们对它的理解。在这个阶段之下,用户还能够参与并评估数据库系统的设计,这样一来的话数据库系统的设计就能到保障用户们对此的需求。E-R模型方法是概念模型...

    电商项目数据库设计文档.docx

    目录 1 文档介绍 1 1.1 编写目的 1 1.2 适用范围 1 1.3 读者对象 1 2 数据库环境说明 1 3 数据库的命名规则 2 4 逻辑设计 2 5 物理设计 2 5.1表汇总 2 5.2各表信息 3 1.用户基本信息表(T_userInfo) 3 2.角色信息...

    数据库设计命名规范.docx

    修订记录 时间 版本 修改点 修改人 目 录 1 目的 3 2 数据库名命名规范 3 3 数据库表命名规范 3 4 表字段命名规范 4 5 表设计规范 4 6 索引命名规范 5 7 主键、外键命名规范 5 目的 此规范包括数据库名命名规范、...

Global site tag (gtag.js) - Google Analytics