推扬网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
推扬网 › 门户 ›互联网动态 › 查看内容

通用数据库命名规范(MySQL数据库6大设计规范总结)

2020-4-28 12:13| 发布者: admin| 查看: 202| 评论: 0

摘要: 表字符集选择UTF8,如果要存放emoji,则统一选择UTF8mb4(MySQL5.5.3以后支持) 存储引擎使用InnoDB 不在数据库中存放图片、文件等 变成字符串尽量使用varchar类型 库名、表名、字段名均不适用保留字 ...

Mysql数据库的一些命名规则,很实用

  • 表字符集选择UTF8,如果要存放emoji,则统一选择UTF8mb4(MySQL5.5.3以后支持)

  • 存储引擎使用InnoDB

  • 不在数据库中存放图片、文件等

  • 变成字符串尽量使用varchar类型

  • 库名、表名、字段名均不适用保留字

  • 库名、表名、字段名、索引名使用小写字母

  • 多个单词用下划线,要做到见名知意

  • 库表名不要设计过长,越少越好

  • 字段的一些规范

    • 除非你的字段真的想存Null,否则所有字段均定义为Not Null

    • 使用varchar来存储变长字符串,但是要注意varchar(M)里的M是指字符数而不是字节数

    • 字段类型满足最小化原则,非负整数使用unsigned

    • 浮点数使用decimal来存储,用float有时候会有问题

    • 少用blob text

    • 使用datetime存放时间(不用timestamp,因只能存到2038年,而且现在在占位上和datetime节省优势越来越低)

    为何定义不用Null?

    1、对于InnoDB来说,需要有额外的字节来存储,浪费。 2、一个表内的Null过多会影响优化器。

    关于将时间存储为int格式的问题

    这更多算一个mysql的技巧,将时间存储为int的时间戳形式,这样的设置可能带来运算上的方便,但是也失去了时间类型的意义,有利有弊吧。

    表是单数还是复数

    在Laravel框架中对表的命名有一些推荐(均为复数),Yii并没有推荐,北哥习惯使用单数,代表一种抽象类型,而且使用gii的时候也特别方便。

    当然这不是硬性的,但是你需要统一,不要一会单数一会复数。

    关于字段备注

    首先要说的是,每个数据表的字段必须要写,除此之外,当你用gii生成一个模型的时候,选择上“Generate Labels from DB Comments”,则生成的模型中attributeLables的值自动就是你的字段备注,方便的不要不要的~

    关于表前缀的问题

    当我们数据库中存在不同应用的时候,我们喜欢用表前缀来区分,比如discuz、ecshop,在使用gii的时候,选择上“Use Table Prefix”,则生成的模型不会带这些前缀,且自动适配,这个功能也很贴心。

     


    鲜花

    握手

    雷人

    路过

    鸡蛋

    最新评论

    推荐阅读
    精彩推荐

    广告服务|投稿要求|禁言标准|版权说明|免责声明|手机版|小黑屋|推扬网 ( 粤ICP备18134897号 )|网站地图 | 邮箱:vayae@hotmail.com

    GMT+8, 2026-10-23 10:54 , Processed in 0.122925 second(s), 29 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    返回顶部