`
haouziwefe
  • 浏览: 123412 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

数据库中主键的设计原则

阅读更多

   


<div class="lbmcrcBlogTitle clearfix">
<div class="lbmcrcbtTi">
<h1><span style="font-weight: normal; font-size: 12px;">
<object id="MediaPlayerObject" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" width="0" height="0" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701">
</object>
</span></h1>


<div class="lbmcrcBlogSummary sqlBlogPostFix">
<div>主键和外键是把多个表组织为一个有效的关系数据库的粘合剂。主键和外键的设计对物理数据库的性能和可用性都有着决定性的影响。
必须将数据库模式从理论上的逻辑设计转换为实际的物理设计。而主键和外键的结构是这个设计过程的症结所在。一旦将所设计的数据库用于了生产环境,就很难对这些键进行修改,所以在开发阶段就设计好主键和外键就是非常必要和值得的。

主键:

关系数据库依赖于主键---它是数据库物理模式的基石。主键在物理层面上只有两个用途:

1. 惟一地标识一行。

2. 作为一个可以被外键有效引用的对象。

基于以上这两个用途,下面给出了我在设计物理层面的主键时所遵循的一些原则:

1. 主键应当是对用户没有意义的。如果用户看到了一个表示多对多关系的连接表中的数据,并抱怨它没有什么用处,那就证明它的主键设计地很好。

2. 主键应该是单列的,以便提高连接和筛选操作的效率。

注:使用复合键的人通常有两个理由为自己开脱,而这两个理由都是错误的。其一是主键应当具有实际意义,然而,让主键具有意义只不过是给人为地破坏数据库提供了方便。其二是利用这种方法可以在描述多对多关系的连接表中使用两个外部键来作为主键,我也反对这种做法,理由是:复合主键常常导致不良的外键,即当连接表成为另一个从表的主表,而依据上面的第二种方法成为这个表主键的一部分,然,这个表又有可能再成为其它从表的主表,其主键又有可能成了其它从表主键的一部分,如此传递下去,越靠后的从表,其主键将会包含越多的列了。

3. 永远也不要更新主键。实际上,因为主键除了惟一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。如果主键需要更新,则说明主键应对用户无意义的原则被违反了。

注:这项原则对于那些经常需要在数据转换或多数据库合并时进行数据整理的数据并不适用。

4. 主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。

5. 主键应当有计算机自动生成。如果由人来对主键的创建进行干预,就会使它带有除了惟一标识一行以外的意义。一旦越过这个界限,就可能产生认为修改主键的动机,这样,这种系统用来链接记录行、管理记录行的关键手段就会落入不了解数据库设计的人的手中。


 
0
0
分享到:
评论

相关推荐

    数据库中表的主键设计原则收藏.doc

    数据库中表的主键设计原则收藏

    数据库主键设计原则 设计数据库主健

    数据库主键设计原则:我在设计主键,会采用字符型的.不采用自动递增,在新增记录时,系统生成主键值.一般为全数字进行存入,至于主键值的生成规则,可以按需求进行规则定义.如果没有特殊的要求,只是为了保持唯一...

    数据库主键和外键设计的原则.doc

    数据库主键和外键设计的原则

    数据库主键设计原则.txt

    数据库主键设计原则 或许大家都设计过数据库,也为表定义过主键,今天我想阐述的是,应该如何正确的设计一个主键,在以往的一些资料中,都没有提及到主键设计的原则. 我为此总结了一下: 1.是否要采用GUID作为主键 用GUID...

    Oracle数据库开发和设计规范

    Oracle 数据库开发和设计规范中,命名约定是指对数据库、数据库对象如表、字段、索引、序列、存储过程等的命名约定。命名约定要求使用富有意义的英文词汇,尽量避免使用缩写,多个单词组成的,中间以下划线分割。...

    数据库设计原则.docx

    数据库设计原则全文共5页,当前为第1页。数据库设计原则全文共5页,当前为第1页。1. 原始单据与实体之间的关系 数据库设计原则全文共5页,当前为第1页。 数据库设计原则全文共5页,当前为第1页。 可以是一对一、一对...

    数据库设计PPT课件.pptx

    * 数据库设计的第一步是标识实体,也就是确定数据库中需要存储的信息。 * 实体是数据库中的数据对象,具有一个或多个属性。 * 在需求分析阶段,需要知道要在数据库中存储哪些信息。 * 例如,在学生选课系统中,实体...

    数据库设计规范模板.pdf

    目 次 1 范围 2 引用文件 3 术语、定义和缩略语 3.1 术语 3.2 缩略语 4 总体要求 4.1 数据库设计总体要求 4.2 数据库编程总体要求 5 数据库设计要求 5.1 数据库字符集选择 5.2 数据库表空间设计原则 5.3 数据库分区...

    政务平台数据库设计.doc

    数据库设计原则 (1)标准化 严格按照相关技术标准完成数据库的设计,包括国土资源部颁发的相应数据库建库规 范标准、国家已经发布的许多基础的行业分类、代码标准,以及在信息化建设过程中形 成的一些可操作性强的...

    数据库设计原则(1).pdf

    数据库设计原则 数据库设计原则 1. 原始单据与实体之间的关系 可以是⼀对⼀、⼀对多、多对多的关系。在⼀般情况下,它们是⼀对⼀的关系:即⼀张原始单据对应且只对应⼀个实体。 在特殊情况下,它们可能是⼀对多或多...

    MySQL数据库:逻辑设计.pptx

    在本节中,我们将讨论逻辑设计中的E-R模型转换为关系模式的原则和应用。 E-R模型转换为关系模式的原则 E-R模型是数据库设计中常用的概念模型,它由实体、联系和属性组成。E-R模型转换为关系模式是数据库设计中的一...

    数据库设计思路.doc

    数据库的设计原则 遵循数据库设计的三个范式的要求,可以允许有少量的数据冗余。 一即对属性的原子性约束,要求属性具有原子性,不可再分解。 二即对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性。 三即对...

    美食数据库的设计.docx

    本系统是按照需求分析、概念模型设计、逻辑结构设计、数据库的实施和维护的流程完成数据库设计,力求满足该设计原则。 数据库表设计 数据库的设计通常是以一个已经存在的数据库管理系统为基础的,常用的数据库管理...

    学生成绩管理系统数据库设计.doc

    一、需求分析 需求分析是整个数据库设计中重要的一步,在这个阶段要充分地与用户沟通交流,了 解与分析用户的需求。学生信息管理系统中涉及的主要人员有学生、教师、管理人员; 主要的部门有教务处、系部。在需求...

    数据库设计说明书模板

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

    浅谈数据库设计方法.doc

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

    《Access2016数据库教程》第2章数据库的设计与创建.pptx

    确定数据库需要建立的表和各表包含的字段及主键 (1)概念设计 根据需求分析,学生成绩管理系统中的实体应该包括院系、学生和课程3个实体,给出各实体及联系的E-R图。 (2)逻辑设计 将各实体及联系的E-R图转换为...

    数据库设计规范V.docx

    本规范的适用IT范围包括数据库对象的命名规范、设计原则、SQL语句的设计和使用、SQL语句的性能优化建议、其他与性能有关的设计原则以及设计工具的选择。 命名规范 通用规范 不同的数据库产品对对象的命名有不同的...

    数据库设计思想.docx

    =================================================================================== 防止数据库设计打补丁的方法是"三少原则" (1) 一个数据库中表的个数越少越好。只有表的个数少了,才能说明系统的E--R图少而...

    数据库物理设计.pdf

    年 ⽉ ⽇ ⼩时 分 秒 周 其他: 如何选择主键: 1、区分业务主键和数据库主键: 业务主键:标⽰业务数据,进⾏表与表之间的关联。 数据库主键:优化数据存储。(Innodb会⽣成6个字节的隐含主键) 2、根据数据库的...

Global site tag (gtag.js) - Google Analytics