首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Mysql业务设计(逻辑设计

逻辑设计 数据库设计三大范式 数据库设计第一大范式 数据库表中所有的字段都只具有单一属性 单一属性的列是由基本数据类型所构成 设计出来的表都是简单的二维表 ?  ...反范式化设计 为啥要有这个东西呢,就是因为如果过分的依赖于三大范式,设计出来的表虽然很符合规范,但是SQL的查询性能将会很差,所以才有了反范式设计 什么叫反范式化设计: 反范式化是针对范式化而言的,在前面介绍的三大范式...所谓的反范式化就是为了性能和读取效率的考虑而适当的对数据库设计范式的要求进行违反 允许存在少量冗余,换句话来说反范式化就是用空间换时间 逻辑设计总结 不能完全按照范式的要求进行设计 考虑以后如何使用表...范式化设计优缺点 优点: 可以尽量的减少数据冗余 范式化的更新操作比反范式化更快 范式化的表通常比反范式化的表要小 缺点: 对于查询需要多个表进行关联 更难进行索引优化 反范式化设计的优缺点: 优点:...可以减少表的关联 可以更好的进行索引优化 缺点: 存在数据冗余及数据维护异常 对数据修改需要更多的成本 作者:彼岸舞 时间:2020\07\08 内容关于:Mysql 本文来源于网络,只做技术分享,一概不负任何责任

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

    MySQL索引设计原则

    MySQL索引的设计原则: 索引设计原则一: 针对sql语句中的where,order by,group by条件设计索引。...并且注意where,order by,group by后面跟的字段的顺序,是不是某个联合索引的最左侧字段开始的部分字段 索引设计原则二: 需要考虑字段基数的问题,一般建立索引尽量使用那些基数较大的字段,...索引设计原则三 尽量对那些字段类型较小的字段来设计索引。...对于前缀索引,仅仅包含部分字符到索引树中,where查询是可以使用的,但是order by和group by就用不上了 索引设计原则四 设计索引需要考虑到数据插入更新时索引树也会进而更新,以及主键一定要是自增的...避免数据稀疏造成频繁的页分裂,其次就是索引不要设计的太多,毕竟维护成本较高,也占用磁盘,还有就是插入的数据不是按照顺序来的,从而会导致某个索引树里的索引页自动分裂这就会很浪费时间 总结: 简单来说建立索引需要考虑的点主要一下几个方面

    23720

    MySQL MVCC 设计缺陷

    我的回答:这是 MySQL MVCC 的一个设计缺陷: 虽然 SQL-92 规定了四种隔离级别,但是在引入 MVCC 后,RC/RR 都是 snapshot isolation 下的变体。...既然是 snapshot isolation,MySQL 有什么问题呢,直接上案例: 准备工作: create table mvcc(x int auto_increment primary key,y...isolation 来说 session2 的 trxid 大于 session1 的 trxid,从而 session2 的修改对 session1 应该是不可见的:即 session1 应该更新 0 行,但是 MySQL...MySQL 官方在 5.5+ 的文档也针对该问题做出了 Note: The snapshot of the database state applies to SELECT statements within...下面针对 MySQL RR 给出一个非谓词更新的一个案例:如果不理解这块事务,在T3时想当然就会觉得结果应该是 6000,可能就犯错了。 RR && autocommit=0 ?

    1.6K30

    MySQL大表设计

    存储大规模数据集需要仔细设计数据库模式和索引,以便能够高效地支持各种查询操作。...在面对数亿条数据,每条数据包含数百个字段的情况下,以下是我能想到的在设计数据库的时候需要注意的内容,不足之处欢迎批评指正:1....数据库设计表结构设计垂直分割:将大的表分割成多个相关性较小的表,以减少单个表的字段数量。这有助于提高查询效率和降低冗余。规范化:合理使用规范化,将重复数据抽取成独立的表,以减小数据冗余。...索引设计主键索引:对主键字段创建索引,以提高检索速度。...在设计时,充分了解数据的访问模式,根据查询的特点合理设计索引,通过适当的规范化和分区来优化存储结构,最终达到高效的查询和存储效果。我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

    18010

    MySQL - 高效的设计MySQL库表

    范式与反范式 范式 范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法。数据库的设计范式是数据库设计所需要满足的规范。...对于一些特殊的业务场景,范式设计的表,无法满足性能的需求。此时,就需要根据业务场景,在范式的基础之上进行灵活设计,也就是反范式设计。...使用原则和设计规范 聊完范式,接下来我们看看 MySQL 使用中的一些使用原则和设计规范。...想要发挥 MySQL 的最佳性能,需要遵循 3 个基本使用原则 首先是需要让 MySQL 回归存储的基本职能:MySQL 数据库只用于数据的存储,不进行数据的复杂计算,不承载业务逻辑,确保存储和计算分离...这些字段类型,在 MySQL 数据库的检索性能不高,很难使用索引进行优化。如果必须使用这些功能,一般采取特殊的结构设计,或者与程序结合使用其他的字段类型替代。

    3.3K12

    MySQL索引设计概要

    本文会介绍 数据库索引设计与优化 中设计索引的一些方法,让各位读者能够快速的在现有的工程中设计出合适的索引。...在 MySQL 中,页的大小一般为 16KB,不过也可能是 8KB、32KB 或者其他值,这跟 MySQL 的存储引擎对数据的存储方式有很大的关系,文中不会展开介绍,不过索引或行记录是否在缓存池中极大的影响了访问索引或者数据的成本...查询过程 在上一节中,文章从数据页加载的角度介绍了磁盘 IO 对 MySQL 查询的影响,而在这一节中将介绍 MySQL 查询的执行过程中以及数据库中的数据的特征对最终查询性能的影响。...: 主键列 id 在所有的 MySQL 索引中都是一定会存在的。...索引的设计 作者相信文章前面的内容已经为索引的设计提供了充足的理论基础和知识,从总体来看如何减少随机读取的次数是设计索引时需要重视的最重要的问题,在这一节中,我们将介绍 数据库索引设计与优化 一书中归纳出的设计最佳索引的方法

    1.7K60

    MySQL设计与优化

    前言 怎么设计优雅的表结构?指导原则是什么? 索引为什么那么快?底层为什么要用B+树? 怎么设计好的索引? 怎么优化索引? 常用系统参数代表什么意思?怎么优化参数? mysql优化手段有哪些?...目录 基本概念 mysql概述 innodb引擎架构 mysql设计 mysql优化 总结 一. 基本概念 1. 关系模型 一对一 一对多 多对多 ? 2....设计出高效优雅的数据库 分类: 第一范式(1NF):要求属性不可分,具有原子性。下图的属性被分开来,关系型数据库设计不出来这种表 ?...本文内容串起来如下: 介绍了关关系型数据库和非关系型数据库 知道关系型数据库最重要的特性是事务的一致性,然后介绍了事务的相关特性 如何保证数据一致性:mysql底层做到RR级别事务隔离 用户设计数据库时如何提高一致性...怎么设计好的索引? 怎么优化索引? 根据查询条件设置合适的组合索引,时常用explain分析并调整索引 常用系统参数代表什么意思?怎么优化参数? 略 mysql优化手段有哪些?

    1.1K41

    MySQL数据库设计

    软件项目开发周期中数据库设计 01.需求分析阶段:分析客户的业务和数据处理需求 02.概要设计阶段:设计数据库的E-R模型图,确认需求信息的正确和完整 03.详细设计阶段:应用三大范式审核数据库结构 04....代码编写阶段:物理实现数据库,编码实现应用 05.软件测试阶段:…… 06.安装部署:……   数据库设计步骤:     01.收集信息     02.标识实体     03.标识每个实体的属性    ...数据库的备份 cmd进入命令行 mysqldump -u用户名 -p 数据库名称 >指定的文件 数据库的恢复 前提是必须要有对应的数据库  mysql -u用户名 -p <指定的文件 1. mysql...为DOS命令 2.在执行该语句之前,必须在MySQL服务器中创建新数据库,如果不存在恢复数据库过程将会出错 关系型数据库和非关系型数据库  登录mysql   mysql  -h主机地址   -u用户名...第三范式:在满足第二范式基础上,保证表中除主键列外的其他列,都直接依赖于主键列,则符合第三范式 设计没有好坏,没有对错之分,所谓仁者见仁智者见智 1.MySQL的优势  1.运行速度快,  2.使用成本低

    2.6K110

    mysql设计规范

    尽可能使用 not null定义字段将字段设置成空字符串或者常量值not null防止出现空指针的问题null值存储也需要额外的空间,导致比较运算更为复杂,是优化器难以优化sqlnull值可能会导致索引失效设计索引有查询条件的字段...,一般要加索引单表的索引不超过5个区分度不高的字段,不添加索引(性别)避免索引失效的情况(mysql的内置函数)索引过多,选用联合索引优化不使用外键关联使用外键存在性能问题、并发死锁问题、使用起来不方便等...sql语句触发器:一段代码,当触发某个事件时,自动执行这些代码可以用数据库中相关联的表实现级联修改实现监控某张表中的某个字段的改变而需要做出相应的处理生成某些业务的编号滥用造成数据库和应用程序的维护困难mysql

    24330

    MySQL(数据库设计

    目录: 三大范式 ER图 PowerDesigner工具 数据库设计三大范式 范式是符合某种设计要求的总结,关系型数据库中有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴德斯科范式...班主任编号都直接依赖于学号,班主任姓名和班主任年龄没有直接依赖于学号,而它依赖的是班主任编号(非主键字段); 对上表进行修改,使其符合第二范式,如下面两个表: 1、学生表 2、班主任表 注意: 在实际开发过程中,所有表的设计都必须满足第一范式要求...因为性能的优先级要高于规范的优先级(当性能和规范冲突时以性能为主),特别是电商项目中,为了满足性能要求去违背设计规范。

    1.8K30

    MySQL索引原理及设计

    这篇文章是我从开始做后端开发之后至今学习关于索引知识的一个总结,从原先很多概念的模糊和不理解到现在大致有一个比较清楚的认知,尽量会把关于索引的一些点以及为什么需要这么做给解释明白,包括使用 InnoDB 引擎的 MySQL...索引的相关概念,以及如何针对 InnoDB 进行索引的设计和使用,以及三星索引的概念,会从我所了解到的知识去解释为什么需要这样,如果有错误的地方还请指出。...对于此种情况,MySQL 5.6 版本增加了 Index Condition Pushdown 技术,如果查询中 where 语句可以使用索引中已有的字段(比如这里就是 name,age, gender...),在遍历索引时对这些字段先做判断直接过滤掉不满足条件的值,减少引擎层访问表的次数和 MySQL Server 层访问存储引擎的次数。...作者:About iCell 原文:https://icell.io/how-mysql-index-works/?utm_source=tuicool&utm_medium=referral ?

    71130
    领券