`
annan211
  • 浏览: 445921 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

数据库设计的一般性原则

 
阅读更多

    数据库是任何系统的底层基石,是直接关系互联网项目性能的最重要指标。

   作为影响项目性能的瓶颈所在,尤其体现在关系型数据库。

    性能来源于设计,而不是优化。

    以下设计原则适用mysql数据库

 

根据以往的经验和对数据库的一些了解,总结一些数据库设计的一般性原则,以供

后期模块设计时参考。

 

1 命名原则

   数据库表名和列名大小写统一,为了便于快速识别,最好统一使用小写,单词之间使用下划线连接。

   

2 范式设计

   数据库结构设计不需要严格遵循三范式,适当的使用冗余会降低表的复杂度。尤其是现在存储硬件价格非常便宜的时期。

   

3 分表原则

   在设计表的时候,如果对关系型数据库了解不到位,存储原理知识的缺失会导致表的大小字段混乱。

   由于其存储特性,最好将大字段(text,blob等)与小字段分开存储。

   

4 列的数据类型

   由于数据库会对服务器和网络造成严重的内存和IO消耗,再加上数据库的预读、多次写等特性,在对业务需要充分了解的

   基础上尽可能的使用小字段。如tinyint 能满足需求尽可能不使用smallint,smallint能满足尽可能不使用int.

 

5 字段默认值

   基于数据库存储特性,数据库设计初期,最好根据需要,尽可能的填充字段默认值,避免出现NULL

 

6 主键索引

   主键索引作为数据库最重要的索引数据,往往与性能直接挂钩。主键索引尽可能使用数值类型,避免出现UUID或者字符类型。

   

7 普通索引设计

   普通索引包括唯一性索引和普通索引。

   这一类的索引设计,尽可能的选取选择性高的列作为索引。避免出现重复度过高的列作为索引。

   索引列的选取,最好考虑当其出现在where条件和order by 字段以及join on 之后的那系列。

   原则上单表不允许出现过多的索引列,考虑使用组合索引。

   

8 数据库注释

   考虑到现在pojo都是使用生成器直接生成,因此需要给表和字段添加相应注释。

   

9 存储引擎的选取

   mysql 最常用的引擎包含InnoDB和MyIsAM,

   5.0版本之前,包含事务的表考虑使用InnoDB,不包含事务的表使用MyISAM,

   5.0版本之后,优先考虑使用InnoDB.

   

10 特殊性字段

   考虑到随着业务的发展,系统往往需要考虑数据迁移,数据源多元化等,需要尽可能避免具有唯一性特性的字段。

   例如mssql中的timestamp。

   

11 外键

    互联网项目应尽可能的剔除外键。

 

12 数据库计算

    数据库擅长存储与索引数据,尽可能的避免数据库计算,可通过其他设计避免出现数据库计算。

 

13 内置代码

    mysql 的内置代码功能虽然在5.5版本的发布之后得到很大提升,但是就性能来说与PL-SQL的差距仍然非常巨大。

所以尽可能避免触发器、视图、过程的设计。这也为项目后期可能出现的数据迁移提供条件。

 

14 冷热数据分离

    数据库设计初期,应尽可能的熟悉业务需要,将冷热数据彻底分离,为数据预热加速提供条件,同时可以提高系统加载效率。

 

15 数据库扩展

    数据库设计应充分考虑后期扩展,考虑设计上的开闭原则

记录出现被标记状态的情况下,应根据业务需要以及在可预期的时间范围内数据规模考虑是否需要

将不同状态的数据分别存储。

 

16 json字段考虑

    mysql5之后 加入了存储json格式的技术,在设计时应充分考虑,避免将json字符串直接作为varchar存储。

 

17 排序规则

    在设计初期,必须注意到当字段为字符类型时期排序规则的选取。utf_bin 表示二进制,大小写区别对待,

utf_general_ci 大小写不敏感,但是比较速度较快,正确性稍差,

utf8_unicode_ci 表示支持扩展,即当把一个字母看作与其它字母组合相等时。体现在使用其他国家语言时。

 

简单描述

utf8_unicode_ci和utf8_general_ci对中、英文来说没有实质的差别。

utf8_general_ci校对速度快,但准确度稍差。

utf8_unicode_ci准确度高,但校对速度稍慢

 

18 分区

   分表分库的设计,虽然一定程度可以解决数据库的瓶颈问题,但是同时也带来一系列的重大难题,例如事务分布的考虑,

   分表规则、数据分页、数据维护与迁移等等。

   mysql5 之后的版本允许对表进行分区设计。将数据库文件物理分布。

   

 

分享到:
评论

相关推荐

    Access-2010数据库应用:数据库设计的基本原则.pptx

    4 (3)一般要求数据库设计达到第三范式,因为第三范式的关系模式中不存在非主属性对主关键字的不完全函数依赖和传递函数依赖关系,最大限度地消除了数据冗余和修改异常、插入异常和删除异常,具有较好的性能,基本...

    数据库设计方案.docx

    适应性原则 数据库设计方案全文共8页,当前为第3页。 数据库设计方案全文共8页,当前为第3页。 系统设计应符合统一规划、阶段性实施的原则,充分考虑未来技术发展所带来的系统扩充的需求,预留足够的接口空间,可...

    数据库(Database)设计简述(一般性原则)

    本文从宏观上讲述了数据库设计的一般原则,简略而不简单,比较全面,值得一看

    数据库设计规范-编码规范.docx

    数据库设计规范-编码规范 数据库设计规范-编码规范全文共25页,当前为第1页。数据库设计规范-编码规范全文共25页,当前为第1页。数据库编码规范 数据库设计规范-编码规范全文共25页,当前为第1页。 数据库设计规范-...

    数据库设计原则.docx

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

    2数据库设计规范.doc

    保密级别: 绝密 机密 秘密 内部公开 数据库设计规范 变更记录 "版本号 "修改点说明 "变更日期 "变更人 "审批人 " "V1.0 "创建 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " ...

    8数据库设计规范.doc

    保密级别: 绝密 机密 秘密 内部公开 数据库设计规范 变更记录 "版本号 "修改点说明 "变更日期 "变更人 "审批人 " "V1.0 "创建 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " ...

    动态可扩展的数据库设计.docx

    系统开发过程中遇到的动态可扩展问题提出了一种数据库设计模 型——基于键值对的对象属性可扩展模型,它区分了应用中的不同 对象的类型,通过设计属性分类提高了数据库应用系统中数据的可 改变性和可扩展性。...

    sql数据库应用课程设计

    2.1 一般逻辑模型设计:写出由ERD导出一般关系模型的四条原则,列出数据库初步构思的关系框架,并检查改进之。 2.2 具体逻辑模型设计:按所用的DBMS要求,设计表(文件)的具体结构,在关系框架下补充字段类型、长度...

    3数据库设计规范.doc

    目的 3 2) 范围 3 3) 术语 3 4) 设计概要 3 5) 命名规范(逻辑对象) 4 6) 数据库对象命名 6 7) 脚本注释 8 8) 数据库操作原则 9 9) 常用字段命名(参考) 9 目的 为了统一公司软件开发的设计过程中关于数据库设计时的...

    oracle数据库设计规范.doc

    由于采 用MTS后,可以通过配置网络服务实现某些特定批处理服务采用专用服务器连接方式 ,所以数据库设计时一般采用MTS类型。 数据库SGA配置 数据库SGA可以采用手工配置或按物理内存比例配置,在数据库初始设计阶段...

    数据库设计与优化.docx

    通过分析、比较与综合各种常见的数据库规范化设计方法,一般将数据库设计分为以下六阶段:需求分析阶段;概念设计阶段;逻辑设计阶段;物理设计阶段;数据库实施阶段;数据库运行维护阶段。(如下图所示) 二、 需求...

    数据库物理设计(1).docx

    在创建索引的时候,一般遵循以下的一些经验性原则: l 在经常需要搜索的列上建立索引。 l 在主关键字上建立索引。 l 在经常用于连接的列上建立索引,即在外键上建立索引。 l 在经常需要根据范围进行搜索的列上创建...

    数据库设计简答.doc

    答:数据库设计中的规划阶段的主要任务是进行建立数据库的必要性及可行性分析,确 定数据库系统在组织中和信息系统中的地位,以及各个数据库之间的联系。 7、数据库存设计的需求分析阶段是如何实现的?目标是什么?...

    人事工资管理系统数据库设计.doc

    人事工资管理系统 1问题...3数据库设计 4。3.1数据库介绍 所谓数据库(Database)就是指按一定组织方式存储在一起的,相互有关的若 干个数据的结合,数据库管理系统(database Management System)就是一种操纵和管理

    数据库的设计与研究.doc

    数据库设计;数据库研究 目 录 内容摘要 I 目 录 II 引 言 1 数据库的设计与研究 1 一 系统需求分析 1 (1)调查、分析系统功能需求和用户活动,确定系统边界 2 (2)收集、分析、整理数据 2 二 系统概念设计 4 三 ...

    浅谈数据库设计方法.doc

    这是建立在软件开发经验基础上实施 的操作,可以根据不同角度来阐述数据库设计的方法,以及设计技巧,让更多的数据库 设计人员了解数据库设计相关知识,从而提高了数据库设计的稳定特性、可靠性、以及 扩展性。...

    数据库主键设计原则.txt

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

    4数据库设计规范.doc

    保密级别: 绝密 机密 秘密 内部公开 数据库设计规范 变更记录 "版本号 "修改点说明 "变更日期 "变更人 "审批人 " "V1.0 "创建 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " ...

    数据库设计规范(1).doc

    数据库设计原则 按阶段实施并形成该阶段的成果物 一般符合3NF范式要求;兼顾规范与效率 使用公司规定的数据库设计软件工具 命名符合公司标准和项目标准 数据库设计目标 规范性:一般符合3NF范式要求,减少冗余数据...

Global site tag (gtag.js) - Google Analytics