mysql表设计

表设计流程:
(1)分库:根据模块分
(2)分表:根据流程分表
(3)冗余字段和视图设计
21个表设计准则

(1)命名规范
account_no,account_number
表名用t_user,视图用v_i,字段名:表名_字段名
外键:表名_字段名$1
主键索引:pk_name,唯一索引:uk_name,一般索引:idx_name
(2)选择合适的字段类型
选小的类型:tinyint,smallint,int,bigint
小数,金额选择:decimal,不要使用float和double。
TABLE invoices (
invoice_id INT PRIMARY KEY,
amount DECIMAL(10, 2)
);

在上述示例中,amount列可以存储最多10位数字,其中2位用于小数部分。
精确度和舍入:DECIMAL类型确保数据的精确度,不会导致浮点数的精度问题。任何插入或计算的结果都将按照指定的精度进行四舍五入。
存储的字符串长度相似,尽量使用char定长。
varchar不预先分配空间,长度不要超过5000,如果过大,建议修改类型为text,并且单独抽出一个表,用外键对应。
在一张表中,varchar指定了最大长度的和不能超过65535,超过使用text。
尽管分配了最大长度的内存,但VARCHAR列实际上只会占用实际存储的字符数加上一些额外的字节用于存储长度信息。这意味着如果您在
VARCHAR(50)列中存储了一个只有10个字符的字符串,它只会占用10个字符的存储空间,而不会占用50个字符的存储空间。
在MySQL和许多其他关系型数据库管理系统中,TEXT是一种用于存储长文本数据的数据类型。TEXT数据类型适用于存储大块文本,例如文章、评论、日志、文章内容等等。以下是关于TEXT数据类型的一些关键信息:
1.数据类型分类
:TEXT是一种文本数据类型,通常被分为不同的子类型,根据最大允许的文本长度,可以分为以下几种子类型:

  • TINYTEXT
  • TEXT
  • MEDIUMTEXT
  • LONGTEXT
    2.存储方式
    :TEXT列的数据以二进制形式存储,因此可以容纳各种字符,包括文本、二进制数据或格式化文本,如XML或JSON。
    3.用途
    :TEXT通常用于存储大段的自由文本,例如文章内容、博客帖子、评论等,以及需要较长文本描述的应用程序。
    4.性能考虑
    :由于TEXT列存储大量数据,因此在查询和检索大型TEXT列的数据时可能会对性能产生影响。在处理大文本数据时,您应该考虑合理的索引策略以提高查询性能。
    5.示例
    :以下是一个创建包含TEXT列的表的示例:
    sqlCopy codeCREATE TABLE articles (
    article_id INT PRIMARY KEY,
    title VARCHAR(255),
    content TEXT
    );

在上述示例中,content列用于存储文章的内容,可以容纳大段文本。
总之,TEXT是一种用于存储长文本数据的数据类型,它适用于需要存储大块文本的情况,如文章、评论等。根据您的需求,可以选择不同子类型的TEXT,以满足文本长度的要求。
(3)要选择毫无意义而独立不重复的数字作为主键
比如Auto_increment或者UUID,雪花算法生成的主键。
(4)字段长度选择2的幂次
(5)核心业务不使用物理删除,而是使用逻辑删除
(6)给表添加通用字段
id(主键),create_time,modified_time/update_time,version(用于乐观锁,非必须),remark(备注,非必须),modified_by(修改人,非必须),creator(创建人,非必须)
(7)表中列太多会影响性能,不超过20个
(8)尽量使用not null
(9)考虑哪些列需要加索引
一个表单索引不超过5个,过多会降低写速度。
加在区分度高的列。
(10)三大范式的合理使用
第一范式:字段的原子性
第二范式:所有列都和主键直接相关
第三范式:字段没有冗余,不存在传递依赖。
我们可以通过违反第三范式,添加和主键不是直接相关的冗余数据,从而减少表的数量。
比如:手机,单价,数量,总金额,总金额能通过单价和数量算出来。
(11)不做外键关联,外键概念需要在应用层解决。
(12)使用innodb
(13)使用utf8字符集
(14)枚举需要注释清楚
(15)时间类型的选择:
date,2023-2-2
time,8:30:23
datetime:2023-2-2 8:30:23,和时区无关
timestamp:和时区有关
year:2012
优先选择datetime
(16)不建议使用存储过程和触发器
(17)将多对多表关系,修改为一对多
通过将两个表变为三个表,从而将多对多改为一对多。
比如:学生和课程。通过新建一个学生-课程表,外键关联学生id和课程id,从而实现一对多。
(18)提前考虑分库分表
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/682051.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【闲谈】开源软件的崛起与影响

随着信息技术的快速发展,开源软件已经成为软件开发的趋势,并产生了深远的影响。开源软件的低成本、可协作性和透明度等特点,使得越来越多的企业和个人选择使用开源软件,促进了软件行业的繁荣。然而,在使用开源软件的过…

软考 系统分析师系列知识点之信息系统战略规划方法(10)

接前一篇文章:软考 系统分析师系列知识点之信息系统战略规划方法(9) 所属章节: 第7章. 企业信息化战略与实施 第4节. 信息系统战略规划方法 7.4.6 战略栅格法 战略栅格(Strategic Grid,SG)法是…

基于CU,PO,RD,IPO矩阵图分析数据资产-自创

术语 数据资产:数据资产是具有价值的数据资源。没有价值的数据资源,通过采集,整理,汇总等加工后,也可以成为具有直接或间接价值的数据资产。传统企业逐渐数字化转型,尤其是互联网企业,都十分重视…

C#中implicit和explicit

理解: 使用等号代替构造函数调用的效果以类似重载操作符的形式定义用于类型转换的函数前者类型转换时候直接写等号赋值语法,后者要额外加目标类型的强制转换stirng str -> object o -> int a 可以 int a (int)(str as object)转换通过编译,但没有转换逻辑所以运行会报错…

《区块链公链数据分析简易速速上手小册》第3章:区块链数据结构(2024 最新版)

文章目录 3.1 区块和交易的结构3.1.1 基础知识3.1.2 重点案例:构建简单的区块链3.1.3 拓展案例 1:验证交易签名生成密钥对签名交易验证签名完整的交易签名与验证演示 3.1.4 拓展案例 2:监听和解析区块链事件代币合约示例(Solidity…

Android adb使用超级大全

Android adb使用超级大全 ADB,即Android Debug Bridge,是一款强大的工具,对于Android开发/测试人员来说是不可或缺的,同时也是Android设备玩家的好玩具。本文将详细介绍ADB的使用方法。 ADB的基本用法如下: 命令语法…

Pb协议的接口测试

Protocol Buffers 是谷歌开源的序列化与反序列化框架。它与语言无关、平台无关、具有可扩展的机制。用于序列化结构化数据,此工具对标 XML ,支持自动编码,解码。比 XML 性能好,且数据易于解析。更多有关工具的介绍可参考官网。 P…

Django form组件 - 神奇的后端直接渲染HTML

前言 之前在HTML页面中利用form表单向后端提交数据时会写一些获取用户输入的标签并且使用form标签将其包裹起来。并且很多场景下都需要对用户的输入做校验,比如用户输入的长度和格式等,如果用户输入的有误就需要在页面上相应的位置显示相应的错误信息。…

RBF神经网络中的RBF的英文全称是什么,是用来干什么的?

问题描述:RBF神经网络中的RBF的英文全称是什么,是用来干什么的? 问题解答: RBF神经网络中的RBF是径向基函数(Radial Basis Function)的缩写。径向基函数是一种在机器学习和模式识别中常用的函数类型&…

数据库从入门到精通(一)数据库基础操作

mysql数据库基础操作 cmd下启动mysql数据库操作命令数据库重要的删除操作数据库增删改查操作插入数据更新数据删除数据查询数据查询指定记录in查询满足指定范围之内的条件记录not in查询不在指定范围之内的条件记录带between and 的范围查询带like的字符匹配查询(d%以d开头,%d以…

猫头虎分享已解决Bug || SyntaxError: Unexpected token o in JSON at position 1 ‍

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

【MATLAB】小波神经网络回归预测算法

有意向获取代码,请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 小波神经网络回归预测算法是一种利用小波变换和人工神经网络相结合的方法,用于解决回归预测问题。下面将详细介绍该算法的原理与方法: 小波变换: 小波变…

rocketMQ下载、安装及配置

topic主题 - 里边存在多个队列(队列是真实存在的) rocketMQ安装及配置 一、官网下载 windows和linux系统版本都一样。Binary 下载 下载 | RocketMQ (apache.org) 二、修改运行内存及broker.conf、配置环境变量 1、修改根目录->bin目录下runserve…

如何生成一个修仙世界的狗血短剧剧本2

如何生成一个修仙世界的狗血短剧剧本2 生成一个修仙世界的狗血短剧剧本对话 生成一个修仙世界的狗血短剧剧本 剧本名称:《仙途情缘》 角色: 易天行:男主角,天赋异禀的修仙者,性格坚毅,正直善良。梦瑶&…

ACM训练题:互不侵犯

一看数据范围,如果是枚举所有的棋盘情况,2^K,肯定超了,自然是要一行一行递推,而相邻这个情况用位运算会比较方便,所以用状压dp。 具体算法:dp[i][j][k]表示第i行,前i行有j个棋子&…

P5440 【XR-2】奇迹 (大模拟dfs+欧拉筛板子+闰年)

传送门https://www.luogu.com.cn/problem/P5440 相信奇迹的人,本身就和奇迹一样了不起。——笛亚 《星游记》 思路历程:很离谱的一题,在理论上并不困难,只要简单dfs欧拉筛就能过。在一开始,我采用了倒着模拟的思路&am…

Zig、C、Rust的Pk1

Zig、C、Rust的Pk1 github.com上看到“A basic comparitive analysis of C, C, Rust, and Zig.”:https://github.com/CoalNova/BasicCompare/tree/main 里边的代码是9个月之前的,用现在的zig 0.11.0 及0.12-dev都无法通过编译(具体为:zig-w…

微信,支付宝在线换钱平台系统源码

探索全新、全开源的在线换钱系统源码,它将以前所未有的方式改变您的支付体验。我们为您精心打造了一个集简单易用与安全高效于一身的优质产品,它采用最新的技术开发,为您带来前所未有的便捷与安心。 这款在线换钱系统源码设计直观&#xff0…

AI:127-基于卷积神经网络的交通拥堵预测

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的关键代码,详细讲解供…

error An unexpected error occurred: “https://registry.npm.taobao.org

背景: 想使用yarn命令结果报错 问题原因: 原来证书到期了 http://registry.npm.taobao.org/ 把这个放到浏览器搜索的时候自动换成https://registry.npmmirror.com/ 方案: npm cache clean --forcenpm config set registry https://registry…