`
liwanchun_xd
  • 浏览: 120772 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

数据库设计的一些有效经验

阅读更多
1.是否使用联合主键?个人倾向于少采用联合主键。因为这样会降低索引的效率,联合主键一般都要用到至少一个业务字段,往往是字符串型的,而且理论上多字段的索引比单字段的索引要慢些。看上去似乎也不那么清爽。
在实际的设计中,我尽量避免使用联合主键,有些时候“不得不”使用联合主键。

2.PK采用无意义的字段(逻辑主键)还是有意义的字段(业务主键)?个人倾向于“逻辑主键”,理由是这样设计出的数据库模型结构清晰、关系脉络清楚,往往更符合“第三范式”(虽然不是故意的,呵呵)。而且更容易避开“联合主键”,而且可以使用索引效率高的字段类型,比如int、long、number。缺点是用无意义的字段建立表间的关系,使跨表查询增多,效率下降。(矛盾无处不在,前面刚说完可以提高效率,这里马上又降低效率)。“业务主键”可以提升查询编码的简洁度和效率。
个人使用实际状况,总体来说“逻辑主键”比“业务主键”执行效率低,但不会低到无法满足需求。采用“逻辑主键”比采用“业务主键”更利于数据库模型的结构、关系清晰,也更便于维护。
对于分析型数据库,如数据仓库,千万不要这样做。

3.不要使用多对多关系?个人倾向于少使用多对多关系。这个问题其实不是数据库设计的问题了,在数据库设计中,多对多关系也仅仅存在于概念模型(E-R)阶段,物理模型不在有多对多关系,实际数据库中也不会有“多对多”关系。这是使用ORM时的问题,比如使用Hibernate,多对多关系有时会使编码看起来灵活一些,代价是效率的明显降低。
个人实际使用中,设计时基本不考虑多对多关系,但编码时总会有小组成员使用一些多对多关系,自己建立多对多的ORM,使自己编码方便些,用在数据量小的地方,影响不大。大数据量,则“禁止使用”。

4.为每个表增加一个state字段?我习惯在设计时给每个表设一个state字段,取值0或1,默认值为1,具体业务意义或操作上的意义可以自定义。可以作为一个状态控制字段,如查询、更新、删除条件,单据是否有效(业务单据对应的表会有业务意义上的“有/无效”或“状态”字段,这种情况下,我还是会再加一个state字段),甚至仅仅是控制一条数据是否“有效”(有效的意义你自己定)。在数据迁移(如转入分析用的数据库)时也可能会发挥作用。

5.为每个表设置一些备用字段?没办法,我总是设计不出“完美”的数据表,给每个表加几个备用字段(我一般用字符串型,随你)可以应付“不时之需”,尤其是需要长期维护的、业务可能有临时性变动的系统。

6.尽量不要在一个表中存入其关联表的字段?建议不存!这样做确实可以提高查询效率,但在一个有很多表,并且关联表多的情况下,很难保持数据的一致性!数据库结构也比较糟糕。而且不存,也不会使效率十分低下。

7.不要去直接修改数据库?个人认为这点很重要,当需要修改时,应该先去修改模型,然后同步物理数据库,尤其是团队开发,否则要多做更多的事情来搞定,也可能会引入更多的错误。 
分享到:
评论

相关推荐

    14-数据库课程设计任务书-某客运公司运输管理系统数据库设计.docx

    14-数据库课程设计任务书-某客运公司运输管理系统数据库设计.docx14-数据库课程设计任务书-某客运公司运输管理系统数据库设计.docx14-数据库课程设计任务书-某客运公司运输管理系统数据库设计.docx14-数据库课程设计...

    数据库设计--ER图

    数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据。 1 数据库设计的基本步骤: 2 概念结构设计 2.1 E-R模型基本符号 2.2 初步E-R图设计 2.3 ...

    关系数据库设计

    数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。 数据库设计通常是在一个通用的DBMS支持下进行,...

    数据库设计教案.docx

    数据库设计还需要丰富的经验。数据库设计要求形成规范完整的文档资料。 目的: 设计出能满足用户需求的性能良好的数据库。 基本任务:根据用户对象的信息需求、处理需求和数据库支持的环境(硬件、操作系统与DBMS),...

    数据库设计培训.pptx

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

    数据库设计规范与技巧

     数据库设计是指:对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,有效存储数据,满足用户信息要求和处理要求。  数据库设计的各阶段:  A、需求分析阶段:综合各个用户的应用需求(现实...

    数据库设计与优化.pdf

    1.3 设计阶段 设计阶段可以说是以后系统性能的关键阶段, 在这个阶段, 有一个关系到以后几乎所有性能调优的过程—数据库设计。 在数据库设计完成后,可以进行初步的索引设计,好的索引设计可以指导编码阶段写出高...

    数据库课程设计---某期刊的在线投稿审稿管理系统

    本课程分为系统分析、数据库设计两个阶段进行。应用程序设计作为选做内容。 数据库系统课程设计的主要目标是: a)加深对数据库系统、程序设计语言的理论知识的理解并提高应用水平。 b)通过实践,掌握数据库设计...

    投票系统数据库设计说明.doc

    5 3结构设计 10 3.1概念结构设计 10 3.2逻辑结构设计 11 3.3物理结构设计 12 4运用设计 12 4.1安全保密设计 12 4.2系统运行与维护 12 投票系统数据库设计说明书 1.引言 1.1编写目的 在积极建立科学管理机制的今天,...

    什么是数据库设计数据库设计的步骤.docx

    早期的数据库设计致力于数据模型和建模方法研究,忽视了对行为的设计 数据库设计的方法 手工试凑法 设计质量与设计人员的经验和水平有直接关系 缺乏科学理论和工程方法的支持,工程的质量难以保证 数据库运行一段...

    设计数据库系统设计设计数据库系统设计设计数据库系统设计设计数据库系统设计

    数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据。 数据库设计的基本步骤: • 需求分析 • 概念结构设计 • 逻辑结构设计 • 物理结构设计 ...

    PowerDesigner数据库设计工具

    PowerDesigner数据库设计工具,可以有效的查看设置表结构.

    政务平台数据库设计.doc

    成的一些可操作性强的数据库设计标准。 (2)一致性 数据库设计要符合数据一致性原则,国家、省、地(市)重复存储的业务数据和基础 数据要保持一致性。 (3)完整性 利用关系型数据库提供的数据完整性约束功能来...

    详细的数据库设计说明书[1]

    数据库设计是指对于一个给定的应用环境,提供一个确定最优数据模型与处理模式的逻辑设计,以及一个确定数据库存储结构与存取方法的物理设计,建立起既能反映现实世界信息和信息联系,满足用户数据要求和加工要求,有...

    数据库设计说明.doc

    数据库设计说明 1 概述 1 1.1 编写目的 1 1.2 参考资料 1 1.3 术语和缩写词 1 2 数据库的标识和描述 1 2.1 数据库的标识 1 2.1.1 使用数据库的系统 1 2.1.2 有效日期 1 2.1.3 存储要求 1 2.1.4 数据库文件的物理...

    数据库系统课程设计任务书

    一、《数据库系统课程设计》的目标 ...的基本原理、方法和应用技术,使用数据库设计的原则,面对现实问题设计E-R 模型和关系数据库结构。设计环节能有效使用数据库技术解决数据处理中的实际 问题。

    教室管理系统数据库设计

    为了能够更系统的,更有序的,更合理的,更有效的进行教室管理,有必要利用计算机来处理各种信息,这也就需要一个更有效的教室管理系统。 为此,经过较详细的调查和慎重的思考,我决定做一个教室管理系统,来解决...

    大型论坛 数据库设计

    里面所有对于分表的思想就是,尽量让表文件大小达到最小化, 把内容与其它信息分开的好处就是可以让每个表的文件最小化,对...再就是对于sql语句尽量都保证索引有效,不能索引的sql,尽量采用能索引的高效方式解决

    课程设计 数据库航空公司管理信息系统.docx

    航空公司管理信息系统课程设计数据库设计 一、引言 随着计算机科学与技术的迅速发展,计算机应用领域的不断扩大,许多性能好,功能齐全,应用面广,兼容性强的应用软件相应推出。计算机已经得到了广泛的应用,几乎...

    数据库课程设计图书馆管理系统.doc

    《数据库系统原理》课程设计—图书馆管理系统 一、课程设计的目的及意义 本课程设计是在学习《数据库原理》课程后,进行的一次全面的综合训练,其目的在于 加深对数据库原理的理解,掌握运用数据库应用系统开发软件...

Global site tag (gtag.js) - Google Analytics