数据库是任何系统的底层基石,是直接关系互联网项目性能的最重要指标。
作为影响项目性能的瓶颈所在,尤其体现在关系型数据库。
性能来源于设计,而不是优化。
以下设计原则适用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 之后的版本允许对表进行分区设计。将数据库文件物理分布。
相关推荐
数据库设计原则总结 本文总结了数据库设计的重要原则,包括原始单据与实体之间的关系、主键与外键的设计、基本表的性质、范式标准、通俗地理解三个范式、要善于识别与正确处理多对多的关系、主键PK的取值方法等七个...
数据库设计简述(一般性原则) 数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。数据库设计是信息...
根据给定文件中的标题“数据库设计的一般标准性”,我们可以深入探讨在数据库设计过程中应遵循的一些基本原则和标准。 #### 易于拓展 数据库设计应当具备良好的可扩展性,这意味着在系统需求变化时,数据库结构...
3. 第三范式原则:一般要求数据库设计达到第三范式,因为第三范式的关系模式中不存在非主属性对主关键字的不完全函数依赖和传递函数依赖关系,最大限度地消除了数据冗余和修改异常、插入异常和删除异常,具有较好的...
### 数据库设计指南 在企业运营的过程中,数据如同流淌在企业体内的血液一般至关重要,而数据库的设计则成为了确保这些“血液”能够健康...希望这些经验和技巧能帮助读者更好地理解和掌握数据库设计的基本原则和方法。
数据库设计原则 数据库设计原则是数据库设计的核心要素,它们决定了数据库的架构和性能。本文将从八个方面详细讲解数据库设计原则,包括原始单据与实体之间的关系、主键与外键、基本表的性质、范式标准、通俗地理解...
数据库建表原则是数据库设计的核心要素之一。遵守这些原则可以确保数据库的正确性、可靠性和高效性。本文将从七个方面介绍数据库建表原则。 1. 原始单据与实体之间的关系 原始单据与实体之间可以是一对一、一对多...
数据库课程设计:数据库课程设计通常是计算机科学或相关专业学生的一项重要实践任务,旨在让学生通过实际操作掌握数据库设计的基本原则和技术。这类课程设计通常涉及从需求分析到数据库设计、实现、测试乃至最终的...
Web数据库设计原则 Web数据库设计原则是指在设计Web数据库时需要遵循的一些基本原则和规则,这些原则和规则的遵循可以确保Web数据库的安全、可靠、灵活和高效。Web数据库设计原则主要包括Web数据库概述、Web数据库...
在每个表的描述中,我们注意到一个共性:`id`字段是非空的主键,这符合数据库设计的一般原则,即每个表通常有一个主键字段,用于唯一标识每条记录。在By_sys_chmod表中,`id`字段是Tinyint类型,非空,且为主键,自...
编写数据库设计规范的主要目的是提高数据库设计的质量,确保数据的准确性和一致性,减少数据冗余,提升查询效率,并为后续的系统开发和维护提供清晰的指导。通过遵循这些规范,可以避免在数据库设计阶段出现的潜在...
保密级别: 绝密 机密 秘密 内部公开 数据库设计规范 变更记录 "版本号 "修改点说明 "变更日期 "变更人 "审批人 " "V1.0 "创建 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " ...
综上所述,省级政务平台数据库设计是一个复杂的过程,需要综合考虑标准、一致性、完整性、有效性及安全性等多个方面,确保政务信息系统的稳定高效运行。同时,逻辑和物理设计的细节对于数据管理和业务流程的优化至关...
根据“3分技术,7分经验”的原则,本文将通过分析不同水平的数据库设计者的特点,探讨数据库设计中的技巧与经验。 #### 二、数据库设计者的分类及特点 1. **未系统学习数据结构的程序员**:这类程序员设计的数据库...
### 数据库设计规范详解 #### 一、引言与目的 数据库设计规范旨在明确数据库设计过程中应遵循的一系列...通过以上规范和原则,可以确保数据库设计的一致性、可维护性和高效性,从而更好地支持业务需求和技术发展。
- 执行标准和相关文档:遵循行业标准,如SQL规范、数据完整性原则以及安全最佳实践。 2. 数据库需求分析 - 静态模型:通过识别类(如用户类、匹配算法类、消息类)并建立类图,定义各组件间的关系,为实体关系图...
本资源摘要信息将对数据库设计规范进行详细的解释和说明,以帮助读者更好地理解数据库设计的过程和原则。 1. 概述 数据库设计规范是指数据库设计的操作规范,旨在指导系统设计人员正确理解和开展数据库设计。该规范...
数据库设计是构建高效、稳定、可扩展的信息系统的基础,它涉及到多个方面的规范和原则。本手册将深入探讨数据库设计规范,旨在提供一个清晰的指导框架,确保数据库的命名、字段设计以及文档编制符合最佳实践。 首先...