# Mysql设计规范
## 前言
在设计数据库前,请先参照此规范已有定义字段类型设计数据库,未规范的字段类型请团队自行研究.
> 对于数据库的管理 Windows 使用 [Heidisql](https://www.heidisql.com/) Mac 使用 [SequelPro](https://sequelpro.com/) 公司PHPmyadmin在不久将会关闭停用
## 起步
### 范式
通俗地理解三个范式,对于数据库设计大有好处。在数据库设计中,为了更好地应用三个范式,就必须通俗地理解三个范式(通俗地理解是够用的理解,并不是最科学最准确的理解):
+ 第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解,即没有表中表;
+ 第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性;
+ 第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。
> 通常情况下,这3个范式适用于大多数场景
> 在设计时遵循 由低到高,逐步规范,权衡利弊,适可而止
### 数据库常用字段类型
### 表设计规范
+ 表必须有自增唯一主键
+ 采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线'_'组成;
+ 命名简洁明确,多个单词用下划线'_'分隔;
> 例如:user_login, user_profile, user_detail, user_role, user_role_relation,user_role_right, user_role_right_relation
+ 表前缀'user_'可以有效的把相同关系的表显示在一起;
### 外键规范
+ 使用表全名作为外键字段 比如 user => user_id ,order => order_id ,user_detail =>
+ 不需要表前缀 比如表名为dp_user 直接为user_id
### 字段设计规范
+ 用尽量少的存储空间来存数一个字段的数据;
> 例如:能使用int就不要使用varchar、char,能用varchar(16)就不要使用varchar(256);
+ IP地址最好使用int类型;
+ 固定长度的类型最好使用char,例如:邮编;
+ 能使用tinyint就不要使用smallint,int;
+ 最好给每个字段一个默认值,最好不能为null;
### 常用字段设计
这里整理出生产过程中常用的字段设计
使用范围 | 类型 | 备注
----|------|----
价格 | decimal(8,2) | foo
时间 | int(10) | bar
- 首页
- APP
- 调试
- 部分问题解答
- IM
- 魔工坊APP框架
- 前端
- npm
- MogoAjax
- ES6
- javascript规范
- weui
- 微信小程序
- Mock数据伪造
- Mogo-Css
- O2-Upload
- 七牛图片处理
- 前端调试
- 后端
- 魔工坊海豚PHP
- 文件上传
- O2-Comments
- 前端API
- 消息
- Excel导入/导出
- 阿里短信
- dolphinPHP
- Thinkphp
- 海豚PHP
- 创建项目
- 人人商城与海豚同步问题
- mysql
- 发送HTTP请求
- 支付
- 个推
- 接口开发须知
- 生成海报
- 音频转换
- openssl
- App上架的故事
- 安卓签名问题
- 苹果账号申请
- 各个平台上架内容
- 文案小姐姐的文档
- 微信支付申请流程
- 备案的故事
- 企业支付宝认证
- 微信公众问题
- 微信开放平台与上架应用
- 小程序特殊行业所需材料
- 模型文档模板
- 必读规范
- 跨域
- 前后端数据通讯接口规范
- Restful风格API规范
- 服务器
- SSL中间证书
- Git篇章
- MogoSDK
- 文档模板
- PHP
- 使用
- 概念
- User
- 模型
- 文档书写
- JS
- 安装
- 初始化
- 用户
- 状态管理
- 查询
- 执行函数
- 请求
- 上传
- MogoH5+