阿里巴巴MySQL建表规约与开发规范
需积分: 50 72 浏览量
更新于2024-08-07
收藏 1.06MB PDF 举报
本文档是《阿里巴巴Java开发手册》的一部分,主要涵盖了MySQL的规约,旨在提高数据库设计和使用的规范性和效率。规约分为强制、推荐和参考三大类,旨在提升软件质量和开发效率。
### 一、建表规约
1. **强制**:表达是与否的字段,使用 `is_xxx` 命名,数据类型为 `unsigned tinyint`,1代表是,0代表否。所有非负数字段必须使用 `unsigned`。
2. **强制**:表名和字段名应全为小写字母或数字,禁止数字开头,禁止两个下划线中间仅出现数字。字段名需谨慎选择,避免后期修改代价大。
3. **强制**:表名不使用复数形式,表名应反映实体内容而非数量,与DO类名保持一致。
4. **强制**:禁止使用MySQL保留字作为字段名。
5. **强制**:主键索引名为 `pk_字段名`,唯一索引名为 `uk_字段名`,普通索引名为 `idx_字段名`。
6. **强制**:禁止使用 `float` 和 `double` 存储精确数值,推荐使用 `decimal` 类型以避免精度问题。
7. **强制**:若字符串长度基本相等,使用 `char` 定长字符串类型。
8. **强制**:`varchar` 类型长度不超过 5000,超出此范围的应使用 `text` 类型,并独立为一张表,通过主键关联,以优化索引效率。
9. **强制**:每张表必须包含三个字段:`id`(主键,`unsigned bigint`,单表自增,步长1)、`gmt_create`(创建时间,`datetime` 类型)、`gmt_modified`(修改时间,`datetime` 类型)。
10. **推荐**:表名应包含业务名称和表的作用,如 `tiger_task`、`tiger_reader`、`mpp_config`。
11. **推荐**:数据库名应尽量与应用名称一致。
12. **推荐**:字段含义变更或状态追加时,应及时更新字段注释。
### 二、索引规约
(未提供具体内容,但通常涉及索引的设计原则,如避免全表扫描,合理设计复合索引,考虑查询语句的WHERE子句中的字段等)
### 三、SQL规约
(未提供具体内容,可能包括避免SQL注入,合理使用JOIN操作,减少子查询,优化GROUP BY和ORDER BY等)
### 四、ORM规约
(未提供具体内容,可能涉及对象关系映射的配置和使用规范,如避免N+1查询,正确处理关联关系等)
### 以上规约适用于MySQL数据库,但开发过程中还应遵循其他编程、异常处理、日志、工程和安全规约,以确保整体代码质量和安全性。这些规约对于团队协作和项目维护至关重要,遵循它们可以有效减少错误,提高代码可读性和可维护性。
2014-04-24 上传
189 浏览量
2012-02-12 上传
2008-12-16 上传
2018-02-01 上传
2011-05-14 上传
2009-10-02 上传
2009-12-26 上传
2009-06-12 上传
郑天昊
- 粉丝: 40
- 资源: 3856
最新资源
- SSM Java项目:StudentInfo 数据管理与可视化分析
- pyedgar:Python库简化EDGAR数据交互与文档下载
- Node.js环境下wfdb文件解码与实时数据处理
- phpcms v2.2企业级网站管理系统发布
- 美团饿了么优惠券推广工具-uniapp源码
- 基于红外传感器的会议室实时占用率测量系统
- DenseNet-201预训练模型:图像分类的深度学习工具箱
- Java实现和弦移调工具:Transposer-java
- phpMyFAQ 2.5.1 Beta多国语言版:技术项目源码共享平台
- Python自动化源码实现便捷自动下单功能
- Android天气预报应用:查看多城市详细天气信息
- PHPTML类:简化HTML页面创建的PHP开源工具
- Biovec在蛋白质分析中的应用:预测、结构和可视化
- EfficientNet-b0深度学习工具箱模型在MATLAB中的应用
- 2024年河北省技能大赛数字化设计开发样题解析
- 笔记本USB加湿器:便携式设计解决方案