MySQL 数据库命名规范.PDF

MySQL 数据库命名规范.PDF

大家好,又见面了,我是全栈君。

一、数据库涉及字符规范

采用26 个英文字母(区分大小写)和0-9 这十个自然数,加上下划线’_’组成,共37个字符.不能出现其他字符(注释除外).
注意事项:
1) 以上命名都不得超过30 个字符的系统限制.变量名的长度限制为29(不 包括标识字符@).

2) 数据对象、变量的命名都采用英文字符,禁止使用中文命名.绝对不要在对 象名的字符之间留空格.
3) 小心保留词,要保证你的字段名没有和保留词、数据库系统或者常用访问 方法冲突, 当表名或字段名乃至数据库名和保留字冲突时,在sql语句里可以用 撇号(`)括起来。

4) 保持字段名和类型的一致性,在命名字段并为其指定数据类型的时候一 定要保证一致性.假如数据类型在一个表里是整数,那在另一个表里也要保证是 整型.

二、数据库命名规范

数据库名使用小写英文以及下划线组成(weixin+_jd_com).比如: weixin_jd_com
im_jd_com
备份数据库名使用正式库名加上备份时间组成,如: dbname_20150206

三、数据库表命名规范

数据表名使用小写英文以及下划线组成(项目名+表信息)比如:
oa_user
oa_workflow_steps备份数据表名使用正式表名加上备份时间组成,如: oa_user_20150206

oa_workflow_step_20150206

四、字段命名规范

字段名称使用单词组合完成,首字母小写,单词之间用“_”分隔,最好是带表名前缀.

如oa_user 表的字段:
user_id
user_name表与表之间的相关联字段要用统一名称

五、索引命名规范

索引名称为idx_列名_表名缩写,唯一索引名称为uniq_列名_表名缩写,其中表名 和关联字段名如果过长,可以取表名、关联字段名的前5 个字母,如果表名、关 联字段为多个单词组合,可以取前一个单词,外加后续其它单词的首字母作为字 段名

如普通索引:idx_user_name_oa唯一索引uqidx_ user_name_oa

六、字段类型规范

规则:用尽量少的存储空间来存数一个字段的数据.比如能用int 的就不用char 或者varchar能用varchar(20)的就不用varchar(255)时间戳字段尽量用int 型

七、操作规范

如无备注,则表中的第一个id字段一定是主键且为自动增长; 如无备注,则数值类型的字段请使用UNSIGNED属性; 如无备注,所有字段都设置NOT NULL,并设置默认值; 所有的数字类型字段,都必须设置一个默认值,并设为0; 针对varchar类型字段的程序处理,请验证用户输入,不要超出其预设的长度; 建表时将数据字典中的字段中文名和属性备注写入数据表的备注中(“PK、自动 增长”不用写);

如无说明,建表时一律采用innodb引擎;.尽量采用批量SQL语句,减少与数据库交互次数 提交线上建表改表需求,必须详细注明涉及到的所有SQL语句(包括INSERT、DELETE、UPDATE),便于DBA进行审核和优化。

八、其他设计技巧

1) 避免使用存储过程、触发器、视图、自定义函数等,这些高级特性有性能问题,以及未知BUG较多。业务逻辑放到数据库会造成数据库的DDL、SCALE OUT、SHARDING等变得更加困难。
2) 分区表对分区键有严格要求;分区表在表变大后,执行DDL、SHARDING、单表恢 复等都变得更加困难。因此禁止使用分区表,并建议业务端手动SHARDING。

3) 使用常用英语(或者其他任何语言)而不要使用拼音首字母缩写
4) 将大字段、访问频率低的字段拆分到单独的表中存储,分离冷热数据, 有利于 有效利用缓存,防止读入无用的冷数据,较少磁盘 IO,同时保证热数据常驻内存 提高缓存
5)禁止有 super 权限的应用程序账号存在, 安全第一。super 权限会导致 read only 失效,导致较多诡异问题而且很难追踪。6)不要在MySQL数据库中存放业务逻辑, 数据库是有状态的服务,变更复杂而且 速度慢,如果把业务逻辑放到数据库中,将会限制业务的快速发展。建议把业务逻 辑提前,放到前端或中间逻辑层,而把数据库作为存储层,实现逻辑与存储的分离。

附:建表示例

CREATE TABLE `weixin_test` (
`id` int(20) unsigned NOT NULL AUTO_INCREMENT,
`staff_id` int(11) NOT NULL COMMENT '操作人员 id',
`staff_name` varchar(50) NOT NULL COMMENT '人员名称',
`url` varchar(200) NOT NULL COMMENT '操作路径',
`method` varchar(10) NOT NULL COMMENT '操作方式',
`params` varchar(10) NOT NULL COMMENT '操作参数',
`ip` varchar(20) NOT NULL COMMENT 'ip',
`time` int(11) NOT NULL COMMENT '操作时间',
PRIMARY KEY (`id`),
KEY `idx_staff_id_ct` (`staff_id `)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;

【建议收藏】MySQL 三万字精华总结 —索引

【建议收藏】MySQL 三万字精华总结 —分区、分表、分库和主从复制

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/111466.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • StartActivityForResult详解

    StartActivityForResult详解转载自:https://www.cnblogs.com/zgqys1980/p/5286208.html 一、如果想在Activity中得到新打开Activity关闭后返回的数据,需要使用系统提供的startActivityForResult(Intentintent,intrequestCode)方法打开新的Activity,新的Activity关闭后会向前面的Activity…

  • C++ GetUserName()

    C++ GetUserName()

  • BZOJ4567 [SCOI2016]背单词

    BZOJ4567 [SCOI2016]背单词AddressBZOJ4567洛谷P3294Solution简化下题目,对于排在第xxx个位置的串:1.若存在该串的后缀排在该串后面,该串的代价为n2n2n^2。2.若该串没有后缀,代价为xxx。3.若该串的所有后缀都排在该串前面,记最靠近该串的后缀位置为yyy,代价为x−yx−yx-y。显然只要把所有串翻转,则后缀都变成了前缀,建出Trie…

  • iic通信协议是什么[通俗易懂]

    iic通信协议是什么[通俗易懂] iic通信协议是什么  IIC协议是二线制,信号线包含SDA和SCL,且信号线是双向的,开路结构,需要通过上拉电阻到VCC,具体的电阻值影响的是信号反应速度和驱动能力。  首先,IIC通信与UART,还有SPI统称为串行接口通信,不过它们之间还是有区别的,如UART的负电平逻辑,还有UART通信不需要时钟,只需要特定的波特率即可,SPI与IIC都可以有一个主机,多个从机的情况,…

  • 从TCP协议的原理来谈谈rst复位攻击[通俗易懂]

    从TCP协议的原理来谈谈rst复位攻击[通俗易懂]在谈RST攻击前,必须先了解TCP:如何通过三次握手建立TCP连接、四次握手怎样把全双工的连接关闭掉、滑动窗口是怎么传输数据的、TCP的flag标志位里RST在哪些情况下出现。下面我会画一些尽量简化的图来表达清楚上述几点,之后再了解下RST攻击是怎么回事。1、TCP是什么?TCP是在IP网络层之上的传输层协议,用于提供port到port面向连接的可靠的字节流传输。我来用土语解释下上

  • B4j教程_ubuntu以太坊挖矿

    B4j教程_ubuntu以太坊挖矿Bminer产品介绍Bminer是目前最快的挖矿程序,Bminer是基于NVIDIAGPU深度优化的挖矿软件。Bminer支持Equihash和Ethash两种算法的虚拟币,包括:ETH(以太坊),ETC,ZEC(零币),ZCL,ZEN,HUSH,BitcoinPrivate,KMD,BitcoinGold(比特币黄金)等币种。挖Ethash的币,比如ETH(以太坊),ETC,Bminer仅…

    2022年10月15日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号