MySQL建表规范有哪些

67次阅读
没有评论

共计 3679 个字符,预计需要花费 10 分钟才能阅读完成。

自动写代码机器人,免费开通

本篇文章给大家分享的是有关 MySQL 建表规范有哪些,丸趣 TV 小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着丸趣 TV 小编一起来看看吧。

一、MySQL 建表规范 1.1、准入规范级别

必须:为强制要求,必须遵守,如有特殊需求需要评审

强烈建议:尽量遵守,如无法遵守请给出备注说明

建议:为最佳实践,开发人员可以根据实际情况有所调整

1.2、设计类核心规则

表字符集选择 UTF8【必须】

生产库存储引擎使用 INNODB 【必须】

不在数据库中存储图片、文件,不使用大文本类型【必须】

不使用外键,由程序保证数据一致性【必须】

禁止使用存储过程、触发器  【必须】

每张表数据量控制在 2000W 以下,如预计会超出,需提前做好拆分或者归档迁移计划【强烈建议】

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、平台流程图

MySQL 建表规范有哪些
 MySQL 建表规范有哪些

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 

MySQL 建表规范有哪些

 MySQL 建表规范有哪些

5 配置 163 邮箱:

注:之前使用的是公司的邮件服务,此系统搭建与百度云,就配置 163 邮箱服务了

将授权码配置到邮件服务即可

MySQL 建表规范有哪些

MySQL 建表规范有哪些

MySQL 建表规范有哪些

MySQL 建表规范有哪些

MySQL 建表规范有哪些

MySQL 建表规范有哪些

  6 开启

cd /chunlei/django/createsql_check

python manage.py  runserver IP:port

2.4、界面及操作

1 RD 审核建表 SQL 界面

MySQL 建表规范有哪些

  测试建表 SQL

 create table table_test (id int,name1 varchar(50),primary key(id));

2 自动分析问题

MySQL 建表规范有哪些

MySQL 建表规范有哪些

3 填写表相关信息

RD 确认 ok,填写表相关信息,提交给 DBA

MySQL 建表规范有哪些

MySQL 建表规范有哪些

4 提交信息总览

RD 提交信息总览,默认发送 DBA,也可以填写抄送邮件接收人

 MySQL 建表规范有哪些

  5 发送给 DBA

MySQL 建表规范有哪些

 MySQL 建表规范有哪些

6 DBA 接收邮件

MySQL 建表规范有哪些

 MySQL 建表规范有哪些

  7 DBA 确认

点击邮件的 DBA 确认

 MySQL 建表规范有哪些

填写库表信息,说明等,点击通过 / 拒绝

MySQL 建表规范有哪些

MySQL 建表规范有哪些

提交结果

MySQL 建表规范有哪些

以上就是 MySQL 建表规范有哪些,丸趣 TV 小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注丸趣 TV 行业资讯频道。

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计3679字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)