首页
学习
活动
专区
圈层
工具
发布

MySQL数据库设计规范

规范背景与目的 MySQL数据库与 Oracle、 SQL Server 等数据库相比,有其内核上的优势与劣势。我们在使用MySQL数据库的时候需要遵循一定规范,扬长避短。...设计规范 2.1 数据库设计 以下所有规范会按照【高危】、【强制】、【建议】三个级别进行标注,遵守优先级从高到低。 对于不满足【高危】和【强制】两个级别的设计,DBA会强制打回要求修改。...因为Innodb表支持事务、行锁、宕机恢复、MVCC等关系型数据库重要特性,为业界使用最多的MySQL存储引擎。而这是其他大多数存储引擎不具备的,因此首推InnoDB。...【建议】前端程序连接MySQL或者redis,必须要有连接超时和失败重连机制,且失败重试必须有间隔时间。 【建议】前端程序报错里尽量能够提示MySQL或redis原生态的报错信息,便于排查错误。...因为过长的事务会导致锁数据较久,MySQL内部缓存、连接消耗过多等雪崩问题。

3.2K40

MySQL数据库设计规范

1、MYSQL配置参数lower_case_table_names,不可动态更改,LINUX系统默认为0,即库表名以实际情况存储,大小写敏感。如果是 1,以小写存储,大小写不敏感。...规范十,对于字典类型的表,因数据量少,修改少,影响面大,应依赖数据库约束来确保数据质量。对于日志或流水型表,为了提升效率,可以适当放宽限制。 规范十一,对于字段设计:越简单越好,越小越好。...定义大长度会消耗更多的空间(需要用额外的字节存储长度) 在很多时候,mysql 会以列的长度定义来分配使用内存,过大的字段长度定义会消耗更多的内存。甚至还有可能原来可以在内存执行的排序变为磁盘排序。...如果没有指定主键,mysql 会选择一个非空的唯一键作为主键。如果都没有,mysql 会自动分配 6-bytes长度的全局的 rowid 隐藏列作为主键。

3.3K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL系列 | MySQL数据库设计规范

    规范背景与目的 MySQL数据库与 Oracle、 SQL Server 等数据库相比,有其内核上的优势与劣势。我们在使用MySQL数据库的时候需要遵循一定规范,扬长避短。...设计规范 2.1 数据库设计 以下所有规范会按照【高危】、【强制】、【建议】三个级别进行标注,遵守优先级从高到低。 对于不满足【高危】和【强制】两个级别的设计,DBA会强制打回要求修改。...因为Innodb表支持事务、行锁、宕机恢复、MVCC等关系型数据库重要特性,为业界使用最多的MySQL存储引擎。而这是其他大多数存储引擎不具备的,因此首推InnoDB。...【建议】前端程序连接MySQL或者redis,必须要有连接超时和失败重连机制,且失败重试必须有间隔时间。 【建议】前端程序报错里尽量能够提示MySQL或redis原生态的报错信息,便于排查错误。...因为过长的事务会导致锁数据较久,MySQL内部缓存、连接消耗过多等雪崩问题。

    4.2K30

    数据库MySQL-设计规范

    一、MYSQL数据库设计规范 1、数据库命名规范 a、采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线’_'组成; b、命名简洁明确(长度不能超过30个字符); c、例如:user..., stat, log, 也可以wifi_user, wifi_stat, wifi_log给数据库加个前缀; d、除非是备份数据库可以加0-9的自然数:user_db_20151210; 2、数据库表名命名规范...user_role_relation, user_role_right, user_role_right_relation 注:表前缀’user_'可以有效的把相同关系的表显示在一起; 3、数据库表字段名命名规范...); IP地址最好使用int类型; 固定长度的类型最好使用char,例如:邮编; 能使用tinyint就不要使用smallint,int; 最好给每个字段一个默认值,最好不能为null; 5、数据库表索引规范...1、第一范式(1NF):字段值具有原子性,不能再分(所有关系型数据库系统都满足第一范式); 例如:姓名字段,其中姓和名是一个整体,如果区分姓和名那么必须设立两个独立字段; 2、第二范式(2NF):一个表必须有主键

    1.5K10

    mysql表设计规范

    值存储也需要额外的空间,导致比较运算更为复杂,是优化器难以优化sqlnull值可能会导致索引失效设计索引有查询条件的字段,一般要加索引单表的索引不超过5个区分度不高的字段,不添加索引(性别)避免索引失效的情况(mysql...delete、update都必须考虑外键约束分库分表不能使用不建议使用存储过程、触发器存储过程:已预编译为一个可执行过程的一个或多个sql语句触发器:一段代码,当触发某个事件时,自动执行这些代码可以用数据库中相关联的表实现级联修改实现监控某张表中的某个字段的改变而需要做出相应的处理生成某些业务的编号滥用造成数据库和应用程序的维护困难...mysql对于存储过程、触发器等还不是很成熟,没有完善的出错记录处理,不建议使用sql编写的优化经验查询尽量不要使用select *查询的结果只要一条或者只要最大/小的一条记录,建议使用limit 1避免

    88830

    【数据库设计规范】

    本文将介绍数据库设计规范,包括命名规范和字段类型选择。 一、命名规范 表名和字段名使用小写字母,单词之间使用下划线分隔,如:user_table, user_id。...三、具体案例 数据库设计规范是指在设计数据库时需要遵循的一些规范和原则,以确保数据库的结构合理、性能优良、易于维护和扩展。下面是一个案例分析,说明数据库设计规范的具体应用。...根据数据库设计规范,可以对上述表设计进行如下优化: 主键和外键的设计: 主键应该是唯一标识一条记录的字段,可以使用自增长或UUID等方式来生成主键值。...通过以上的数据库设计规范,建立弱关联,可以设计出一个结构合理、性能优良、易于维护和扩展的学生管理系统数据库。 四、总结 在数据库设计中,合理的命名规范和字段类型选择对于系统的性能和可维护性至关重要。...参考链接: MySQL数据类型详解 PostgreSQL命名规范

    67310

    MySQL 高性能表设计规范

    相关文章: MySQL高性能表设计规范:http://www.jianshu.com/p/f797bbe11d76 MySQL EXPLAIN详解:http://www.jianshu.com/p/ea3fc71fdc45...MySQL 可以为整数类型指定宽度, 例如 INT(11), 对大多数应用这是没有意义的:它不会限制值的合法范围,只是规定了MySQL 的一些交互工具(例如 MySQL 命令行客户端)用来显示字符的个数...在范式化的数据库中, 每个事实数据会出现并且只出现一次。 相反, 在反范式化的数据库中, 信息是冗余的, 可能会存储在多个地方。...简单熟悉数据库范式 第一范式(1NF):字段值具有原子性,不能再分(所有关系型数据库系统都满足第一范式); 例如:姓名字段,其中姓和名是一个整体,如果区分姓和名那么必须设立两个独立字段...参考资料: 高性能mysql第三版

    1.2K20

    数据库的设计规范(1)

    范 式 范式简介 在关系型数据库中,关于数据表设计的基本原则、规则就称为范式。可以理解为,一张数据表的设计结 构需要满足的某种设计标准的 级别 。...要想设计一个结构合理的关系型数据库,必须满足一定的范式。...范式都包括哪些 目前关系型数据库有六种常见范式,按照范式级别,从低到高分别是:第一范式(1NF)、第二范式 (2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF...为了使表符合 1NF ,我们应该有如下表数据: 举例2: user 表的设计不符合第一范式 其中,user_info字段为用户信息,可以进一步拆分成更小粒度的字段,不符合数据库设计对第一范式的 要求

    69030

    数据库命令及设计规范

    数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用 MySQL 保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意...bak_ 为前缀并以日期 (时间戳) 为后缀 所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果查询时关联列类型不一致会自动进行数据类型隐式转换,会造成列上的索引失效,导致查询效率降低) 数据库基本设计规范...所有表必须使用 Innodb 存储引擎 没有特殊要求(即 Innodb 无法满足的功能如:列存储,存储空间数据等)的情况下,所有表必须使用 Innodb 存储引擎(MySQL5.5 之前默认使用 Myisam...所有表和字段都需要添加注释 使用 comment 从句添加表和列的备注,从一开始就进行数据字典的维护 尽量控制单表数据量的大小,建议控制在 500 万以内 500 万并不是 MySQL 数据库的限制,过大会造成修改表结构...6.尽量做到冷热数据分离,减小表的宽度 MySQL 限制每个表最多存储 4096 列,并且每一行数据的大小不能超过 65535 字节。

    1.8K30

    数据库字段及索引设计规范

    字段设计规范 1....而且对于这种数据,MySQL 还是要进行二次查询,会使 sql 性能变得很差,但不是说一定不能使用这样的数据类型。...TEXT 或 BLOB 类型只能使用前缀索引 因为 MySQL[1] 对索引字段长度是有限制的,所以 TEXT 类型只能使用前缀索引,并且 TEXT 列上是不能有默认值的 3....decimal Decimal 类型为精准浮点数,在计算时不会丢失精度;占用空间由定义的宽度决定,每 4 个字节可以存储 9 位数字,并且小数点要占用一个字节;可用于存储比 bigint 更大的整型数据 索引设计规范...因为 MySQL 优化器在选择如何优化查询时,会根据统一信息,对每一个可以用到的索引来进行评估,以生成出一个最好的执行计划,如果同时有很多个索引都可以用于查询,就会增加 MySQL 优化器生成执行计划的时间

    1.6K20

    Oracle数据库的几种设计规范

    为了达到数据库设计规范的要求,一般来说,需要符合以下几个要求。...虽然表中允许有空列,但是,空字段是一种比较特殊的数据类型,数据库在处理的时候 需要进行特殊的处理,这样的话,就会增加数据库处理记录的复杂性,当表中要比较多的空字段时,在同等条件下,数据库处理的性能会降低许多...数据库对象要有统一的前缀名 一个比较复杂的应用系统,其对应的数据表往往数以千计,钥匙让数据库管理员看到对象名就了解这个数据库对象所起的作用 这样比较困难,而且在数据库对象引用的时候,数据库管理员也会为不能迅速找到数据对象对发愁...为此在开发数据库之前,最好花时间去制定一个数据库的对象的前缀命名规范, 如在设计数据库时和前台应用程序协商,确定合理的命名规范,如和物料管理模块相关的表可以用M为前缀,而订单管理相关的就用C作为前缀,具体采用什么前缀就根据用户的爱好...就需要为每次出版的图书增加作者信息,这无疑会增加额外的存储空间,也会增加记录的长度,而且作者的情况有变,如住址修改,这样还会修改每本书的记录,同属若这个作者的数从库中全部删除后,跟着这个作者的信息也就没了很明显这不符合数据库设计规范要求

    1.5K20

    MySQL【三】---数据库查询详细教程{分页、连接查询、自关联、子查询、数据库设计规范}

    primary key, -> cid int, -> atitle varchar(20), -> pid int); show tables;  直接输入cmd 在此启动mysql...在开发中右很多设计数据库的软件,常用的入power designer,db designer等,这些软件可以只管得看到实体及实体间的关系。 设计数据库可能由专人来完成,也可能让开发组的人完成。...一般来说,数据库只需要满足第三范式就行了。 5.1.2 第一范式:保证每列的原子性 第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库满足了第一范式。  ...4、删除异常:假设一批学生已经完成课程的选修,这些选修记录就应该从数据库表中删除。...中间的表称谓聚合表 总结:设计数据库,先满足范式;在考虑是一对一,一对多,多对多的对应。

    2.4K20

    数据库避坑指南:MySQL里那些常见的错误设计规范,你中了几个?

    为了避免给后面学习的人造成误解,我们今天来看一看 MySQL 设计规范中几个常见的错误例子。...比如在 MySQL 数据库中,参数 innodb_autoinc_lock_mode 用于控制自增锁持有的时间。...如1元在数据库中用整型类型 100 存储。...索引个数限制 错误的设计规范:限制每张表上的索引数量,一张表的索引不能超过 5 个 MySQL 单表的索引没有个数限制,业务查询有具体需要,创建即可,不要迷信个数限制 子查询的使用 错误的设计规范:避免使用子查询...其实这个规范对老版本的 MySQL 来说是对的,因为之前版本的 MySQL 数据库对子查询优化有限,所以很多 OLTP 业务场合下,我们都要求在线业务尽可能不用子查询。

    1.6K20

    数据结构(ER数据库)设计规范 原

    [type] 表示数据库表的类型,分为: r:行数据表。 l:列数据表。 g:分组数据表。 [name] 用来表示表的作用名称,由于mysql默认对大小写不敏感,采用下划线命名法。...在分布式微服务系统中采用Mysql的自增主键在分表分库、灾备合库、分布式执行、缓存Write-Behind写时会有很大制约,因此需要制定不依赖数据库的行主键规范。...主键类型 在解释数据设计规范之前先理解物理主键、逻辑主键和业务主键的区别: 物理主键即认为是数据库的自身的物理标识主键,例如oracle的ROW_ID,mysql的自增Sequence,物理主键除了具备独立的物理特性...mysql中要求单表唯一。 逻辑主键是与数据库无关的非业务意义的主键,用于对行数据的唯一性进行标识。在单数据库系统中,通常不需要逻辑主键,而在分布式系统中,逻辑主键的意义重大。...传统中间解决方案 基于Mysql目前也可以自动生成UUID,所以有一种中间解决方案是在分布式系统的数据库中物理主键使用Mysql的自增Sequence,逻辑主键使用UUID,所有的ER关联都使用UUID

    2K30

    数据库设计规范,需要注意几点!

    编码规范 UTF-8 表设计规范 必须有主键 主键递增,可提高写入性能,减少碎片 禁止使用外键 降低表之间的耦合,不要涉及更新操作的级联,并发高情况极度影响SQL性能 字段设计规范 必须有注释 不然鬼才知道代表什么意思...字符串 默认空字符串 时间 非current_timstamp(mysql5版本不支持该语法)默认'1970-01-01 08:00:01',date类型无时分秒 通用字段 create_time(created_at...,默认current_timestamp,on update current_timestamp is_deleted:逻辑删除标志位,视情况选择 禁止使用text\blob 浪费磁盘和内存空间,影响数据库性能...尽量使用分或者更小的单位用整数存储,否则精度的问题会很麻烦 命名规则 表、列 使用业务模块开头,如tb_order,列名以下划线分割 索引 create_time、update_time必须包含索引 主键索引 数据库自动

    83920

    YashanDB数据库数据建模与设计规范详解

    在现代数据库技术领域,实现高性能访问及数据一致性是设计数据库系统时面临的关键挑战。随着数据规模和应用复杂度的不断提高,传统的数据库设计方法面临性能瓶颈、扩展性限制及一致性保障难题。...本文旨在系统梳理YashanDB的数据建模与设计规范,细化关键技术点,帮助开发人员和DBA准确理解和应用,以提升数据库设计的科学性和实用性。1....存储结构与表设计规范YashanDB支持HEAP(行存表)、MCOL(可变列式存储的列存表,TAC表)及SCOL(稳态列式存储的列存表,LSC表)三种存储结构,分别适配OLTP、HTAP及OLAP场景。...结论本文从YashanDB的部署架构、存储结构、索引机制、事务管理、分区与访问约束、安全防护等多个技术维度,对数据建模与设计规范进行了系统性梳理。...合理运用YashanDB提供的丰富功能和灵活策略,能够有效提升数据库的性能、可用性及安全性。

    40710

    遵循这些MySQL设计规范,再也没被组长喷过

    那么我们又当如何去进行数据库的设计呢?接下来,老猫从我们日常开发中用到比较多的mysql数据库的设计规范说起。如下。 概要 表设计 关于表设计,咱们从以下几个方面来看。...虽然mysql在windows下表名不区分大小写,但是在linux下是区分大小写的,因此表名最好为小写。...表设计-设计规范 1、表设计的时候一般使用Innodb引擎。当然Mysql存在两种可选引擎还有一种是MyISAM。MyISAM速度快,但是不支持事务、外键以及行级锁。...接下来咱们简单聊一下不同层面的索引的划分,然后再来聊索引相关的设计规范。 索引的分类 根据存储类型划分 聚集索引:在数据库表中物理顺序和主键顺序一致,即数据行按照主键的顺序存储。...设计规范 1、不是所有的数据库字段都适合加索引的。我们在建立索引的时候需要评估字段的区分度。应该尽量避免将索引建立在区分度低的字段上。举个例子,例如性别:男女。

    55810

    第11章_数据库的设计规范

    BCNF 被认为没有新的设计规范加入,只是对第三范式中设计规范要求更强,使得数据库冗余度更小。所以,称为是 修正的第三范式 ,或 扩充的第三范式 ,BCNF 不被称为第四范式。...【强制】禁止在数据库中存储图片、文件等大的二进制数据 通常文件很大,短时间内造成数据量快速增长,数据库进行数据库读取时,通常会进行大量的随 机 IO 操作,文件很大时,IO 操作很耗时。...可视化工具除了方便,还能直接帮我们将数据库的结构定义转化成 SQL 语言,方便数据库和数据表结构的导出和导入。...因为过长的事务会导致锁数据较久,MySQL 内部缓存、连接消耗过多等问题。...在此设置学号的自增(MYSQL 里面的自增是这个 AUTO_INCREMENT),班级编号同理,不多赘述! 在下面的这个点上对号即可,就设置好了自增 全部完成后如下图所示。

    1.4K61
    领券