文档章节

mysql-- 数据库建表语句的规范小结

仔仔_杨
 仔仔_杨
发布于 2015/04/24 22:11
字数 695
阅读 38
收藏 0

-- 数据库建表语句的规范小结

建表语句的规范:
1.字段的设计
    A. 数据类型尽量用数字类型,数字类型的比字符类型的要快很多。
  B. 数据类型尽量小,这里的尽量小是指在满足可以预见的未来需求的前提下的,但是有不能太小,
   上次监控系统里面的表 mon_tair_stat_detail_2012_1 的data_size 和 use_size定义的是int(15) 实际上最大长度是int(11)  只有bigint才有(15).
   所以在建表的时候一定要预估这个字段最大的长度到底是多少。
  C. 尽量不要允许NULL,除非必要,可以用NOT NULL+DEFAULT 的值来代替。
  D. 少用TEXT和IMAGE,二进制字段的读写是比较慢的,而且,读取的方法也不多,大部分情况下最好不用。

2.字段名字的定义
  A. 对字段名字的命名也要遵循一个规范。比如说时间: 目前我们定义时间的时候 都是create_time, modify_time,以后建表的时候,都按照这个标准来,就不要写成createtime这样的。
  B. 布尔类型的值均以 is、has、exist 或者 can开头。
  C. 记录行的状态都用status, 逻辑删除的标识用is_deleted。
  D. 新建的表与之前的表的字段有相似或者相同的字段,字段的名称和类型也必须相同,切记不能随意的重新命名,例如:token_md5 就不要命名成tokenmd5了。
  E. 每个字段的COMMENT必须写清楚,枚举类型必须写清楚每个值到底是什么意思。
  F. 表名 字段名字统一用小写。
  G.索引名称统一用字段名称,多个字段的索引加_ 比如 (uid,type)  索引名就是 uid_type。
  H.字段名字不要用驼峰命名法 比如create_time 不要写成CreateTime.
  I.字段命名关键字统一用下划线"_"分割,一般采用简写,关键字要准确,不能有歧义。
  J.字段的排列顺序:自增列、int类型的、varchar类型、时间类型、状态类型(status,is_deleted)。基本原则是:主要内容在前,次要内容在后,不为空的在前,可以空的在后面。
  K.时间类型尽量用 timestamp 4个字节,而不用datetime 8个字节。只用表示日期的字段用date类型。
  L.时间类型自动修改,比如modify_time 在记录被修改的时候回被自动更新成当前的时间: `modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
  而create_time在记录被修改的时候则不必自动更新成当前的时间:`create_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'


本文转载自:http://blog.csdn.net/lxpbs8851/article/details/8766392

共有 人打赏支持
仔仔_杨
粉丝 4
博文 5
码字总数 288
作品 0
大连
程序员
私信 提问
MySQL 误删ibdata、ib_logfile恢复案例

昨天为了测试mysql数据库快速删除大库的方案,一时起意把redo和undo log也一起删除了,由此才有下文 一、前言 InnoDB 有两块非常重要的日志,一个是undo log,另外一个是redo log,前者用来保...

IT--小哥
01/04
0
0
去IOE 遇到Jdbc mysql sql_mode的坑

在去IOE(IBM的小型机+Oracle的数据库+EMC的高端存储)的过程中遇到一个Oracle的建表语句(转换处理过后)具体语句如下: 通过Java的Jdbc执行后报错:BLOB/TEXT column 'FEXPRESSION' can't ...

adam_public
2018/08/15
0
0
在docker中运行sql文件

搭建步骤 1、首先创建Dckerfile: FROM mysql:5.7#设置免密登录ENV MYSQLALLOWEMPTY_PASSWORD yes#将所需文件放到容器中COPY setup.sh /mysql/setup.shCOPY schema.sql /mysql/schema.sqlCOP......

技术小牛人
2017/11/20
0
0
转换MYSQL建表语句转换H2建表语句工具

前言 前几个星期, 搭建项目的单元测试配置, 打算使用H2做为内存数据库来跑单元测试, 但是项目使用的是MYSQL数据库, Navicat导出的sql不兼容H2数据库, 所以需要转换.经过了一些常识, 写了个工...

德胜
2016/07/07
427
0
如何反向生成hbm文件

我们项目需要根据源数据库(各种各样的数据库SQLServer,DB2,Mysql,Oracle等)反向生成建表语句功能; 例如将mysql中一张表复制到oracle中,已知信息是源数据库的IP、schema等信息,目标库是Ora...

有云天空
2014/03/11
221
0

没有更多内容

加载失败,请刷新页面

加载更多

商品详情页上拉查看详情

商品详情页上拉查看详情 目录介绍 01.该库介绍 02.效果展示 03.如何使用 04.注意要点 05.优化问题 06.部分代码逻辑 07.参考案例 01.该库介绍 模仿淘宝、京东、考拉等商品详情页分页加载的UI效...

潇湘剑雨
18分钟前
0
0
Netty内存池之PoolArena详解

PoolArena是Netty内存池中的一个核心容器,它的主要作用是对创建的一系列的PoolChunk和PoolSubpage进行管理,根据申请的不同内存大小将最终的申请动作委托给这两个子容器进行管理。整体上,P...

爱宝贝丶
23分钟前
1
0
Django使用Channels实现WebSocket--下篇

希望通过对这两篇文章的学习,能够对Channels有更加深入的了解,使用起来得心应手游刃有余 通过上一篇《Django使用Channels实现WebSocket--上篇》的学习应该对Channels的各种概念有了清晰的认...

运维咖啡吧
30分钟前
2
0
linux下设置定时执行shell脚本的示例

很多时候我们有希望服务器定时去运行一个脚本来触发一个操作,比如说定时去备份服务器数据、数据库数据等 不适合人工经常做的一些操作这里简单说下 shell Shell俗称壳,类似于DOS下的command...

阿锋zxf
34分钟前
3
0
介绍Kubernetes监控Heapster

什么是Heapster? Heapster是容器集群监控和性能分析工具,天然的支持Kubernetes和CoreOS,Kubernetes有个出名的监控agent—cAdvisor。在每个kubernetes Node上都会运行cAdvisor,它会收集本机...

xiangyunyan
35分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部