当前位置:网站首页>MySQL 数据库命名规范.PDF
MySQL 数据库命名规范.PDF
2022-06-29 15:01:00 【码农编程进阶笔记】
一、数据库涉及字符规范
采用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;边栏推荐
- Unity C basic review 29 - Generic delegation (p451)
- 第九章 APP项目测试(此章完结)
- Trigonometric function corresponding to drawing circle on plane coordinate
- MCS: discrete random variable - binomial distribution
- Weigao blood purification sprint to Hong Kong: annual revenue of RMB 2.9 billion, net profit decreased by 12.7%
- 雷达发射机
- Northwestern Polytechnic University attacked by overseas e-mail
- Get the width of text component content
- Hi, you have a code review strategy to check
- PyTorch 二维多通道卷积运算方式
猜你喜欢

使用自定义注解实现Redis分布式锁

Lumiprobe 活性染料丨氨基染料:花青5胺

Differential equations of satellite motion

For example, the visual appeal of the live broadcast of NBA Finals can be seen like this?

Wechat official account - menu

CKS CKA CKAD 将终端更改为远程桌面

MCS: discrete random variable Pascal Distribution

打造一个 API 快速开发平台,牛逼!

Lumiprobe 点击化学丨非荧光叠氮化物:叠氮化物-PEG3-OH

Lumiprobe 脱氧核糖核酸丨磷酸盐 CPG 1000 固体载体
随机推荐
Unity C # basic review 26 - first acquaintance Commission (p447)
What is the relationship between synchronized and multithreading
Knowledge points: what are the know-how of PCB wiring?
LeetCode-1188. 设计有限阻塞队列
Heavyweight! The latest SCI impact factors were released in 2022, and the ranking of the three famous journals NCS and the top10 of domestic journals has changed (the latest impact factors in 2022 are
Lumiprobe 活性染料丨环炔染料:AF488 DBCO,5 异构体
nfs配置两台主机之间的文件映射
文本预处理库spaCy的基本使用(快速入门)
Real software testers = "half product + Half development"?
MCS: discrete random variables - geometric distribution
深度学习遥感数据集
Intelligent diagnosis of Alzheimer's disease
I am 35 years old. Can I change my career to be a programmer?
bash汇总线上日志
Lumiprobe reactive dye carboxylic acid: sulfo cyanine7.5 carboxylic acid
Ink drop typesetting
MCS:离散随机变量——几何分布
Get the width of text component content
数据挖掘复习
LeetCode笔记:Biweekly Contest 81