iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >专业级的MySQL开发设计规范及SQL编写规范
  • 270
分享到

专业级的MySQL开发设计规范及SQL编写规范

摘要

在团队开发过程中为了项目的稳定,代码的高效,管理的便捷制定内部种开发设计规范是必不可少的, 这里分享一份我们定义Mysql开发设计规范包括表设计规范,字段设计规范,sql编写规范 数据库对象命名规范 数据库对象 命名

在团队开发过程中为了项目的稳定,代码的高效,管理的便捷制定内部种开发设计规范是必不可少的,

这里分享一份我们定义Mysql开发设计规范包括表设计规范,字段设计规范,sql编写规范

数据库对象命名规范

数据库对象

命名规范的对象是指数据库SCHEMA、表TABLE、索引INDEX、约束CONSTRaiNTS等的命名约定

数据库对象命名原则

命名使用具有意义的英文词汇,词汇中间以下划线分隔

命名只能使用英文字母、数字、下划线

避免用mysql的保留字如:call、group等

所有数据库对象使用小写字母

数据库命名规范

数据库名不能超过30个字符

数据库命名必须为项目英文名称或有意义的简写

数据库创建时必须添加默认字符集和校对规则子句。默认字符集为UTF8(已迁移dumbo的使用utf8mb4)

命名应使用小写

表命名规范

同一个模块的表尽可能使用相同的前缀,表名称尽可能表达含义

多个单词以下划线(_)分隔

表名不能超过30个字符

普通表名以t_开头,表示为table,命名规则为t_模块名(或有意义的简写)_+table_name

临时表(运营、开发或数据库人员临时用作临时进行数据采集用的中间表)命名规则:加上tmp前缀和8位时间后缀(tmp_test_user_20181109)

备份表(DBA备份用作保存历史数据的中间表)命名规则:加上bak前缀和8位时间后缀(bak_test_user_20181109)

命名应使用小写

字段命名规范

字段命名需要表示其实际含义的英文单词或简写,单词之间用下划线(_)进行连接

各表之间相同意义的字段必须同名

字段名不能超过30个字符

用户命名规范

生产使用的用户命名格式为 code_应用

只读用户命名规则为 read_应用

数据库对象设计规范

存储引擎的选择

如无特殊需求,必须使用innodb存储引擎

字符集的选择

如无特殊要求,必须使用utf8或utf8mb4

表设计规范

不同应用间所对应的数据库表之间的关联应尽可能减少,不允许使用外键对表之间进行关联,确保组件对应的表之间的独立性,为系统或表结构的重构提供可能性

表设计的角度不应该针对整个系统进行数据库设计,而应该根据系统架构中组件划分,针对每个组件所处理的业务进行数据库设计

表必须要有PK

一个字段只表示一个含义

表不应该有重复列

禁止使用复杂数据类型(数组,自定义等)

需要join的字段(连接键),数据类型必须保持绝对一致,避免隐式转换

设计应至少满足第三范式,尽量减少数据冗余。一些特殊场景允许反范式化设计,但在项目评审时需要对冗余字段的设计给出解释

TEXT字段必须放在独立的表中,用PK与主表关联。如无特殊需要,禁止使用TEXT、BLOB字段

需要定期删除(或者转移)过期数据的表,通过分表解决

单表字段数不要太多,建议最多不要大于50个

MySQL在处理大表时,性能就开始明显降低,所以建议单表物理大小限制在16GB,表中数据控制在2000W内

如果数据量或数据增长在前期规划时就较大,那么在设计评审时就应加入分表策略

无特殊需求,严禁使用分区表

字段设计规范

INT:如无特殊需要,存放整型数字使用UNSIGNED INT型。整型字段后的数字代表显示长度

DATETIME:所有需要精确到时间(时分秒)的字段均使用DATETIME,不要使用TIMESTAMP类型

VARCHAR:所有动态长度字符串 全部使用VARCHAR类型,类似于状态等有限类别的字段,也使用可以比较明显表示出实际意义的字符串,而不应该使用INT之类的数字来代替;VARCHAR(N),N表示的是字符数而不是字节数。比如VARCHAR(255),可以最大可存储255个字符(字符包括英文字母,汉字,特殊字符等)。但N应尽可能小,因为MySQL一个表中所有的VARCHAR字段最大长度是65535个字节,且存储字符个数由所选字符集决定。如UTF8存储一个字符最大要3个字节,那么varchar在存放占用3个字节长度的字符时不应超过21845个字符。同时,在进行排序和创建临时表一类的内存操作时,会使用N的长度申请内存。(如无特殊需要,原则上单个varchar型字段不允许超过255个字符)

TEXT:仅仅当字符数量可能超过20000个的时候,才可以使用TEXT类型来存放字符类数据,因为所有MySQL数据库都会使用UTF8字符集。所有使用TEXT类型的字段必须和原表进行分拆,与原表主键单独组成另外一个表进行存放。如无特殊需要,严禁开发人员使用MEDIUMTEXT、TEXT、LONGTEXT类型

对于精确浮点型数据存储,需要使用DECIMAL,严禁使用FLOAT和DOUBLE

如无特殊需要,严禁开发人员使用BLOB类型

如无特殊需要,字段建议使用NOT NULL属性,可用默认值代替NULL

自增字段类型必须是整型且必须为UNSIGNED,推荐类型为INT或BIGINT,并且自增字段必须是主键或者主键的一部分

索引设计规范

索引必须创建在索引选择性选择性较高的列上,选择性的计算方式为: select count(distinct(col_name))/count(*) from tb_name;如果结果小于0.2,则不建议在此列上创建索引,否则大概率会拖慢SQL执行

组合索引的首字段,必须在where条件中,对于确定需要组成组合索引的多个字段,建议将选择性高的字段靠前放

禁止使用外键

Text类型字段如果需要创建索引,必须使用前缀索引

单张表的索引数量理论上应控制在5个以内。经常有大批量插入、更新操作表,应尽量少建索引

ORDER BY,GROUP BY,DISTINCT的字段需要添加在索引的后面,形成覆盖索引

尽量使用Btree索引,不要使用其它类型索引

约束设计规范

PK应该是有序并且无意义的,尽量由开发人员自定义,且尽可能短,使用自增序列。

表中除PK以外,还存在唯一性约束的,可以在数据库中创建以“uidx_”作为前缀的唯一约束索引。

PK字段不允许更新。

禁止创建外键约束,外键约束由应用控制。

如无特殊需要,所有字段必须添加非空约束,即not null

如无特殊需要,所有字段必须有默认值。

SQL编写规范

尽量避免使用select *,join语句使用select *可能导致只需要访问索引即可完成的查询需要回表取数

严禁使用select * from table而不加任何where条件

MySQL中的text类型字段存储的时候不是和由其他普通字段类型的字段组成的记录存放在一起,而且读取效率本身也不如普通字段块。如果不需要取回text字段,又使用了select *,会让完成相同功能的sql所消耗的io量大很多,而且增加部分的io效率也更低下

在取出字段上可以使用相关函数,但应尽可能避免出现now(),rand(),sysdate(),current_user()等不确定结果的函数,在Where条件中的过滤条件字段上严禁使用任何函数,包括数据类型转换函数

所有连接的SQL必须使用Join ... On ...方式进行连接,而不允许直接通过普通的Where条件关联方式。外连接的SQL语句,可以使用Left Join On的Join方式,且所有外连接一律写成Left Join,而不要使用Right Join

分页查询语句全部都需要带有排序条件,除非应用方明确要求不要使用任何排序来随机展示数据

WHERE条件中严禁在索引列上进行数学运算或函数运算

in()/uNIOn替换or,并注意in的个数小于300

严禁使用%前缀进行模糊前缀查询:如:select id,val from table where val like ‘%name';可以使用%模糊后缀查询如:select id,val from table where val like ‘name%'

严禁使用INSERT ON DUPLICATE KEY UPDATEREPLACE INTOINSERT IGNORE

本文做个抛砖引玉,每个团队都有自己的开发设计规范,Mysql开发设计规范不单单只有这些,希望本文对您有所启发

您可能感兴趣的文档:

--结束END--

本文标题: 专业级的MySQL开发设计规范及SQL编写规范

本文链接: https://www.lsjlt.com/news/9947.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL开发设计规范有哪些
    这期内容当中小编将会给大家带来有关MySQL开发设计规范有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。命名规范 l  库名、表名、字段名禁止超过32个...
    99+
    2024-04-02
  • MySQ设计与开发规范有哪些
    这篇文章主要介绍了MySQ设计与开发规范有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MySQ设计与开发规范有哪些文章都会有所收获,下面我们一起来看看吧。数据库对象命名规...
    99+
    2024-04-02
  • java开发文档编写规范是什么
    Java开发文档编写规范是一套规范,用于指导Java开发人员编写清晰、一致和易于理解的文档。以下是一些常见的Java开发文档编写规范...
    99+
    2023-08-28
    java
  • 《MySQL高级篇》九、数据库的设计规范
    文章目录 1. 为什么需要数据库设计2. 范 式2.1 范式简介2.2 范式都包括哪些2.3 键和相关属性的概念2.4 第一范式(1st NF)2.5 第二范式(2nd NF)2.6 第三范式...
    99+
    2023-09-12
    数据库 mysql 设计规范
  • C#开发建议:文档编写与注释规范
    在C#开发中,良好的文档编写和注释规范不仅是一种良好的编码习惯,更是提高团队协作效率和代码可维护性的重要因素。本文将介绍一些C#开发的文档编写与注释的规范建议,旨在帮助开发者提高代码质量和可读性。一、文档编写规范注重整体结构:编写文档时,应...
    99+
    2023-11-22
  • SQL开发规范中的有哪些误区
    这篇文章主要介绍“SQL开发规范中的有哪些误区”,在日常操作中,相信很多人在SQL开发规范中的有哪些误区问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQL开发规范中的有哪些...
    99+
    2024-04-02
  • 微信小程序开发之组件设计规范
    微信小程序组件设计规范 组件化开发的思想贯穿着我开发设计过程的始终。在过去很长一段时间里,我都受益于这种思想。 组件可复用 - 减少了重复代码量 组件做为抽离的功能...
    99+
    2024-04-02
  • PHP开发的代码书写以及文件命名规范
    这篇文章主要介绍“PHP开发的代码书写以及文件命名规范”,在日常操作中,相信很多人在PHP开发的代码书写以及文件命名规范问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP开发的代码书写以及文件命名规范”的疑...
    99+
    2023-06-17
  • PEP8编码规范,及开发中的一些惯例和建
    为什么要有编码规范   规范的代码给人的第一感觉是【美观】,美的东西总是更加的吸引人,也愿意观看。不规范的代码风格总是令人感到难受,检查会很困难。所以美观带来的是代码的【可读性】强,想一想你写的代码可读性非常高,是不是检查起来容易,维护起...
    99+
    2023-01-30
    惯例
  • 【小程序专栏】总结uniapp开发小程序的开发规范
    文章目录 一、项目结构二、开发规范遵循Vue 单文件组件 (SFC) 规范组件及接口规范 三、css样式规范全局样式与局部样式尺寸响应式字体的使用请使用flex布局方式 一...
    99+
    2023-09-09
    小程序 vue.js javascript uniapp
  • MySQL数据库表设计规范是怎么样的
    小编给大家分享一下MySQL数据库表设计规范是怎么样的,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、数据库设计1、一般都使用 INNODB 存储引擎,除非读写比率<1%,才考虑使...
    99+
    2024-04-02
  • 优化 | 重要的MySQL开发规范都在这了
    这篇文章主要介绍“优化 | 重要的MySQL开发规范都在这了”,在日常操作中,相信很多人在优化 | 重要的MySQL开发规范都在这了问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2024-04-02
  • 如何在PHP开发中优化代码编写和命名规范?
    如何在PHP开发中优化代码编写和命名规范?在 PHP 开发中,优化代码编写和命名规范是非常重要的,它们可以提高代码的可读性、可维护性和可扩展性。本文将介绍一些在 PHP 开发中优化代码编写和命名规范的方法。一、代码编写的优化使用合理的缩进和...
    99+
    2023-11-04
    代码 优化 命名规范
  • MySQL数据库基本设计规范是怎么样的
    这篇文章将为大家详细讲解有关MySQL数据库基本设计规范是怎么样的,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。所有表必须使用Innodb存储引擎   ...
    99+
    2024-04-02
  • 如何使用MySQL进行表的设计和规范化?
    如何使用MySQL进行表的设计和规范化?MySQL是一种常用的关系型数据库管理系统,被广泛应用于各种软件开发和数据存储需求中。在使用MySQL进行表的设计和规范化时,遵循一定的原则和规则可以提高数据库的性能和可维护性。本文将介绍如何使用My...
    99+
    2023-10-22
    - MySQL - 表设计 - 规范化
  • MySQL数据库的命令、基本设计以及字段等设计的规范详细说明
    本篇内容主要讲解“MySQL数据库的命令、基本设计以及字段等设计的规范详细说明”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL数据库的命令、基本设计以及...
    99+
    2024-04-02
  • CSS代码需要注意的编写规范及优化建议有哪些
    CSS代码需要注意的编写规范及优化建议有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。结构、样式、行为分离尽量确保文档和模板只包含 H...
    99+
    2024-04-02
  • C++开发注意事项:避免C++代码中的编码规范问题
    在进行C++开发时,除了关注功能实现和性能优化等方面的问题外,开发人员还需要注意代码的编码规范。良好的编码规范不仅可以提高代码的可读性和可维护性,还有助于减少错误和增加代码的一致性。本文将介绍一些常见的C++开发注意事项,帮助开发人员避免编...
    99+
    2023-11-22
    注意事项 编码规范 C++开发 关键词提取:
  • 阿里云数据库设计规范2020一套实现企业级数据库管理的关键指南
    本文将详细介绍阿里云数据库设计规范2020,包括其主要内容、目标以及适用范围。我们将深入解析每个模块的设计原则,并提供实用的案例和最佳实践,以帮助企业级用户实现高效、安全、可扩展的数据库管理系统。 阿里云数据库设计规范2020是阿里云为企业...
    99+
    2024-01-25
    阿里 企业级 设计规范
  • 如何通过MySQL设计规约提升技术同学的数据库开发质量?
    如何通过MySQL设计规约提升技术同学的数据库开发质量?概述在现代软件开发中,数据库是一个非常关键的组成部分。MySQL作为一种广泛使用的关系型数据库管理系统,其设计和开发必须遵循一定的规约。本文将介绍如何通过MySQL设计规约来提升技术同...
    99+
    2023-10-22
    数据库开发 质量提升 MySQL规约
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作