MySQL建表规范及建表SQL审核平台

欢迎转载,请注明作者、出处。
作者:刘春雷
blog:http://blog.itpub.net/28823725/
如有疑问,欢迎留言~
 
                                                                                                MySQL建表规范及建表SQL审核平台
                                                                                        --刘春雷 20150618


如果你想学习mysql规范~
如果你想学习django~
如果你想练习python~
那么此篇文章适合你~

一、MySQL建表规范

1.1、准入规范级别

必须 :为强制要求,必须遵守,如有特殊需求需要评审
强烈建议 :尽量遵守,如无法遵守请给出 备注说明
建议 :为最佳实践,开发人员可以根据实际情况有所调整

1.2、设计类核心规则

表字符集选择 UTF8 【 必须
生产库存储 引擎使用 INNODB  必须
不在 数据库中存储图片、 文件 ,不使用大文本类型 必须
使用 外键 ,由程序保证数据一致性 必须
禁止 使用 存储过程 触发器   必须
每张表数据量控制在 2000 W 以下 ,如预计会超出,需提前做好拆分或者归档迁移计划 强烈建议

1.3、命名规范

库名、表名、字段名、索引名使用小写字母,以下划线_分割 【 必须
库名、表名、字段名、索引名不使用保留字 (关键字)【 必须
库名、表名、字段名不超过15个字符,需见名知意 【 建议
索引命名:【 强烈建议
唯一索引:“ux_表名_字段名前3字母[_字段名前3字母]”
非唯一索引:“ix_表名_字段名前3字母[_字段名前3字母]”

1.4、字段类规范

所有字段均定义为NOT NULL 【必须
字符串统一单引号引用,而不是双引号【 必须
使用UNSIGNED存储非负整数 【 必须
使用DECIMAL存储精确浮点数 【 必须
使用TINYINT来代替ENUM类型 【 必须
拆分TEXT、BLOB类型字段,或者独立建表 【 必须
使用UNSIGNED INT存储ipv4 地址,而不是CHAR(15) 【 强烈建议
非中文字段使用varchar存储变长字符串 【 强烈建议
尽可能将字符转化为数字 存储【 建议
使用TIMESTAMP存储操作时间 *【 建议

1.5、索引类规范

单张表索引数量不超过5,单个索引字段数不超过5  【 强烈建议
避免冗余索引 【 强烈建议
重要的SQL必须被索引 【 强烈建议
       UPDATE、DELETE语句的WHERE条件列
       ORDER BY、GROUP BY、DISTINCT的字段
       多表JOIN的字段
 主键的选择要慎重 【 强烈建议】 
      首选使用非空的唯一键, 其次选择自增列或发号器
      不使用更新频繁的列,尽量不选择字符串列,不使用UUID MD5 HASH、
能不建立索引尽量不用索引  强烈建议
     不在null列上加索引
     不在低基数列上建立索引,例如“性别” 



二、建表SQL审核平台

2.1、说明

此系统为了学习与减轻DBA的审核建表SQL的工作而做。达到自动审核基本规则问题
<1>优点:
<1>减少了DBA手动审核表的工作
<2>平台化操作,方便
<3>通过python自动匹配与审核规范
<2>缺点:
<1>、只有建表SQL审核
<2>、比较简单,后期可以使用inception,来审核建表SQL+上线SQL+备份等,请关注博客  http://blog.itpub.net/28823725/  后期会调研与应用

<3>审核说明:
利用python程序来分析
分为:error,suggest错误类别
按字段错误进行展示

<4>其他说明:
<1>此系统写于2015年6月初左右,为了学习inception 与python 为做, 分享此文章只为了学习与交流
另Inception没开源多久;对比inception的请轻喷哈~
<2>后期会出Inception的相关文章

2.2、平台流程图


 

 

2.3、搭建

<1>环境搭建
django环境搭建
忽略,可参考我博客的其他文章,里面有详细的部署命令

python2.7环境搭建
忽略

平台搭建
cd /chunlei/django
创建项目:
django-admin.py   startproject  createsql_check
会产生目录 createsql_check

cd  /chunlei/django/ createsql_check
ls
createsql_check
manage.py
<2>设置配置文件
cd /chunlei/django/ createsql_check / createsql_check
vi settings.py 

ALLOWED_HOSTS = ['可以访问的IP地址,也可以写*即不限制'] 

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    ' createsql_check',
]

EMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [' /chunlei/chunlei/django/createsql_check/createsql_check/templates'],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

TIME_ZONE = 'Asia/Shanghai'

<3>、设置django的url文件
from django.conf.urls import  include, url
from createsql_check.views import createcheck_create_table_check
from createsql_check.views import createcheck_create_sql
from createsql_check.views import createcheck_get_dba_error_suggest
from createsql_check.views import createcheck_to_mail
from createsql_check.views import to_input_confirm_info
from createsql_check.views import to_confirm

urlpatterns = [
url(r'^createcheck_create_table_check/$',createcheck_create_table_check),
url(r'^createcheck_create_sql/$',createcheck_create_sql),
url(r'^createcheck_get_dba_error_suggest/$',createcheck_get_dba_error_suggest),
url(r'^createcheck_to_mail/$',createcheck_to_mail),
url(r'^createcheck_to_input_confirm_info/$',to_input_confirm_info),
url(r'^createcheck_to_confirm/$',to_confirm),
]

<4>创建目录
cd  /chunlei/django/createsql_check
mkdir check_html
mkdir log
cd  /chunlei/django/createsql_check/createsql_check 
 

<5>配置163邮箱:
注:之前使用的是公司的邮件服务,此系统搭建与百度云,就配置163邮箱服务了
将授权码配置到邮件服务即可

 <6>开启
cd  /chunlei/django/createsql_check
python manage.py  runserver IP:port



2.4、界面及操作

<1>RD审核建表SQL界面
 

 测试建表SQL
 create table table_test (id int,name1 varchar(50),primary key(id));

<2>自动分析问题
 
<3>填写表相关信息
RD确认ok,填写表相关信息,提交给DBA
 
<4>提交信息总览
RD提交信息总览,默认发送DBA,也可以填写抄送邮件接收人
 
 <5>发送给DBA
 

<6>DBA接收邮件
 
 <7>DBA确认
点击邮件的"DBA确认"
 
 
 
填写库表信息,说明等,点击通过/拒绝
提交结果
 所有审核与表的相关信息已经入库
注:代码就不分享了,大家可以自己利用python来学习写一写;可以结合inception来搭建~
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28823725/viewspace-2143080/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28823725/viewspace-2143080/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值