• 技术文章 >数据库 >mysql教程

    归纳整理MySQL数据库设计规范

    长期闲置长期闲置2022-06-10 09:58:08转载374
    本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于数据库设计规范的相关问题,在使用MySQL数据库的时候需要遵循一定规范,扬长避短,希望能够在帮助或指导 RD、QA、OP 等技术人员做出适合线上业务的数据库设计。

    推荐学习:mysql视频教程

    规范背景与目的

    MySQL 数据库与 Oracle、 SQL Server 等数据库相比,有其内核上的优势与劣势。我们在使用 MySQL 数据库的时候需要遵循一定规范,扬长避短。本规范旨在帮助或指导 RD、QA、OP 等技术人员做出适合线上业务的数据库设计。在数据库变更和处理流程、数据库表设计、SQL 编写等方面予以规范,从而为公司业务系统稳定、健康地运行提供保障。

    数据库设计

    以下所有规范会按照【高危】、【强制】、【建议】三个级别进行标注,遵守优先级从高到低。

    对于不满足【高危】和【强制】两个级别的设计,DBA 会强制打回要求修改。

    一般命名规则

    create database db_name default character set utf8;

    字段

    字段数据类型优化

    select inet_aton('192.168.2.12');
    select inet_ntoa(3232236044);

    Java 保存字符串ip 转 int 类型

    public static long ipToLong(String addr)
    {
        String[] addrArray = addr.split("\\.");
        long num = 0;
        for (int i = 0; i < addrArray.length; i++)
        {
            int power = 3 - i;
            num += ((Integer.parseInt(addrArray[i]) % 256 * Math.pow(256, power)));
        }
        return num;
    }
    public static String longToIp(long i){
        return ((i >> 24) & 0xFF) + "." +
               ((i >> 16) & 0xFF) + "." +
               ((i >> 8) & 0xFF) + "." +
               (i & 0xFF);
    }

    索引设计

    分库分表、分区表

    字符集

    程序层 DAO 设计建议

    一个规范的建表语句示例

    一个较为规范的建表语句为:

    create table user
    (
        `id`            bigint(11) not null auto_increment,
        `user_id`       bigint(11) not null comment '用户 ID',
        `username`      varchar(45) not null comment '登录名',
        `email`         varchar(30) not null comment '邮箱',
        `nickname`      varchar(45) not null comment '昵称',
        `avatar`        int(11) not null comment '头像',
        `birthday`      date not null comment '生日',
        `gender`        tinyint(4) default '0' comment '性别',
        `intro`         varchar(150) default null comment '简介',
        `resume_url`    varchar(300) not null comment '简历存放地址',
        `register_ip`   int not null comment '用户注册时的源 IP',
        `review_status` tinyint not null comment '审核状态,1-通过,2-审核中,3-未通过,4-尚未提交审核',
        `create_time`   timestamp not null comment '记录创建的时间',
        `update_time`   timestamp not null comment '资料修改的时间',
        primary key (`id`),
        unique key `idx_user_id` (`user_id`),
        key `idx_username`(`username`),
        key `idx_create_time`(`create_time`, `review_status`)
    )
    engine = InnoDB
    default charset = utf8
    comment = '用户基本信息';

    DML 语句

    多表连接

    事务

    排序和分组

    线上禁止使用的 SQL 语句

    推荐学习:mysql视频教程

    以上就是归纳整理MySQL数据库设计规范的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:今日头条,如有侵犯,请联系admin@php.cn删除
    专题推荐:mysql
    上一篇:归纳整理MySQL索引优化知识点 下一篇:mysql中时间用什么类型
    20期PHP线上班

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• mysql怎么实现列求和• ubuntu怎么修改mysql编码• mysql怎么解决3534无法启动• MySQL基础详解之数据模型和SQL语言• 整理归纳五大常见的MySQL高可用方案
    1/1

    PHP中文网