zoukankan      html  css  js  c++  java
  • MySQL建表规约整理《Java开发手册》

    建库

    1、库名与应用名称尽量一致

    建表

    1、表名、字段名必须使用小写字母或数字,禁止出现数字开头,禁止两个下划线中间只出现数字。数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑。

    说明:MySQL 在 Windows下不区分大小写,但在 Linux 下默认是区分大小写。因此,数据库名、表名、
    字段名,都不允许出现任何大写字母,避免节外生枝。

    • 正例:aliyun_admin,rdc_config,level3_name
    • 反例:AliyunAdmin,rdcConfig,level_3_name

    2、表名不使用复数名词。

    说明:表名应该仅仅表示表里面的实体内容,不应该表示实体数量,对应于DO类名也是单数形式,符合表达习惯。

    3、表的命名最好是遵循“业务名称_表的作用”。

    • 正例:alipay_task / force_project / trade_config

    建字段

    合适的字符存储长度,不但节约数据库表空间、节约索引存储,更重要的是提升检索速度。

    1、数据表必备三字段:id, create_time, update_time。

    说明:其中 id 必为主键,类型为 bigint unsigned、单表时自增、步长为 1。create_time, update_time
    的类型均为 datetime 类型,前者现在时表示主动式创建,后者过去分词表示被动式更新。

    是与否类型字段

    1、表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类型是 unsigned tinyint(1 表示是,0 表示否)。

    说明:任何字段如果为非负数,必须是unsigned。

    注意:POJO类中的任何布尔类型的变量,都不要加 is 前缀,所以,需要在设置从 is_xxx 到Xxx的映射关系。数据库表示是与否的值,使用 tinyint类型,坚持is_xxx的命名方式是为了明确其取值含义与取值范围。

    • 正例:表达逻辑删除的字段名 is_deleted,1 表示删除,0 表示未删除。

    普通字段

    1、禁用保留字,如desc、range、match、delayed 等,请参考 MySQL 官方保留字。

    2、如果存储的字符串长度几乎相等,使用char 定长字符串类型。

    索引字段

    1、主键索引名为 pk_字段名;唯一索引名为 uk_字段名;普通索引名则为 idx_字段名。

    说明:pk_ 即 primary key;uk_ 即 unique key;idx_ 即 index 的简称

    数字字段

    1、小数类型为 decimal,禁止使用 float 和 double。

    说明:在存储的时候,float 和 double
    都存在精度损失的问题,很可能在比较值的时候,得到不正确的结果。如果存储的数据范围超过 decimal 的范围,建议将数据拆成整数和小数并分开存储。

    长字段

    1、varchar是可变长字符串,不预先分配存储空间,长度不要超过5000,如果存储长度大于此值,定义字段类型为text,独立出来一张表,用主键来对应,避免影响其它字段索引效率。

    改字段

    1、如果修改字段含义或对字段表示的状态追加时,需要及时更新字段注释。

    冗余字段

    1、字段允许适当冗余,以提高查询性能,但必须考虑数据一致。冗余字段应遵循

    • 不是频繁修改的字段。
    • 不是唯一索引的字段。
    • 不是 varchar 超长字段,更不能是text字段。

    正例:各业务线经常冗余存储商品名称,避免查询时需要调用 IC 服务获取

    分库分表

    1、单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表。

    说明:如果预计三年后的数据量根本达不到这个级别,请不要在创建表时就分库分表。

  • 相关阅读:
    LeetCode 230. 二叉搜索树中第K小的元素(Kth Smallest Element in a BST)
    LeetCode 216. 组合总和 III(Combination Sum III)
    LeetCode 179. 最大数(Largest Number)
    LeetCode 199. 二叉树的右视图(Binary Tree Right Side View)
    LeetCode 114. 二叉树展开为链表(Flatten Binary Tree to Linked List)
    LeetCode 106. 从中序与后序遍历序列构造二叉树(Construct Binary Tree from Inorder and Postorder Traversal)
    指针变量、普通变量、内存和地址的全面对比
    MiZ702学习笔记8——让MiZ702变身PC的方法
    你可能不知道的,定义,声明,初始化
    原创zynq文章整理(MiZ702教程+例程)
  • 原文地址:https://www.cnblogs.com/fengda1/p/14340200.html
Copyright © 2011-2022 走看看