MySQL数据库表设计规范[亲测有效]

MySQL数据库表设计规范[亲测有效]一、数据库设计 1、一般都使用 INNODB 存储引擎,除非读写比率<1%,才考虑使用 MYISAM 存储引擎;其 他存储引擎请在 DBA 的建议下使用。 2、Stored procedure (包...

MySQL数据库表设计规范

MySQL数据库表设计规范[亲测有效]

一、数据库设计

1、一般都使用 INNODB 存储引擎,除非读写比率<1%,才考虑使用 MYISAM 存储引擎;其 他存储引擎请在 DBA 的建议下使用。

2、Stored procedure (包括存储过程,函数,触发器)对于 MYSQL 来说还不是很成熟, 没有完善的出错记录处理,不建议使用。

3、UUID(),USER()这样的MySQL INSIDE 函数对于复制来说是很危险的,会导致主备数据不一致,所以请不要使用。如果一定要使用UUID作为主键,让应用程序来产生。

4、请不要使用外键约束,如果数据存在外键关系,请在程序层面实现。

5、必须采用 UTF8 编码。

二、数据库对象设计规范

1、表

设计

a)在设计时尽量包含两个日期字段:crt_time(创建日期),upd_time(修改日期)且 非空, 对表的记录进行更新的时候,必须包含对 upd_time字段的更新。

b)必须要有主键,主键尽量用自增字段类型,推荐类型为INT或者BIGINT类型。

c)需要多表join的字段,数据类型保持绝对一致。

d)Mysql 的表尽量设置成 KV(Key-Value)结构,这样便于扩展和维护。

e)当表的字段数非常多时,可以将表分成两张表,一张作为条件查询表,一张作为详细内容表(主要是为了性能考虑)。

f)当字段的类型为枚举型或布尔型时,建议使用 char(1)类型。

g)同一表中,所有varchar字段的长度加起来,不能大于65535.如果有这样的需求,请使用 TEXT/LONGTEXT 类型。

h)由于MYSQL表DDL维护成本很高,所以在适当的时候,可以有一定的字段容余。 比如:Value1,Value2,Value3 这样的字段。

命名

a)同一个模块的表尽可能使用相同的前缀,表名尽可能表达含义,例如: CRM_SAL_FUND_ITEM。

b)字段命名应尽可能使用表达实际含义的英文单词或缩写, 如,公司 ID,不要使用:corporation_id, 而用:corp_id 即可。

c)布尔值类型的字段命名为is+描述。如member表上表示是否为enabled的会员的字 段命名为 IsEnabled。

2、索引

命名

a) _ind,各部分以下划线()分割。

b) 多单词组成的columnname,取前几个单词首字母,加末单词组成column_name。如: sample 表 member_id 上的索引:sample_mid_ind。

3. 约束

设计

a) 主键最好是无意义的,由Sequence产生的ID字段,类型为number,不建议使用组合主键。

b) 若要达到唯一性限制的效果,不要创建uniqueindex,必须显式创建普通索引和约束 (pk 或 uk),即先创建一个以约束名命名的普通索引,然后创建一约束,用 using index …指定索引。

c) 当删除约束的时候,为了确保不影响到 index,最好加上 keep index 参数。

d) 主键的内容不能被修改。

e) 外键约束一般不在数据库上创建,只表达一个逻辑的概念,由程序控制。

f) 当万不得已必须使用外健的话,必须在外健列创建 INDEX。

命名

a) 主键约束: pk 结尾,_pk;

b) unique 约束:_uk 结尾,uk;

c) check 约束: _ck 结尾,ck;

d) 外键约束: _fk 结尾,以 pri 连接本表与主表,_pri_fk;

 

attachments-2020-07-bdX4UgJ65f0572f553f3e.jpg

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/7509.html

(0)
上一篇 2023-03-19
下一篇 2023-03-19

相关推荐

  • Python List 插入元素的方法

    Python List 插入元素的方法执行以上代码可以得到输出结果:[1, ‘apple’, 2, 3]。在这个例子中,我们向一个包含三个元素的列表中插入一个字符串,并指定它的索引为1。注意,这里是将字符串插入到索引1的位置,原来处于该位置的元素以及后面的元素都会自动向后移动一个位置。

    2024-02-20
    99
  • 如何重装Python

    如何重装Python在这个充满着技术的世界里,Python作为一种高效、易学的编程语言,被广泛地应用于各类领域。但是,可能会出现一些问题导致需要重新安装Python。那么,如何重装Python呢?本文将为您介绍如何在Windows和MacOS系统中重新安装Python。

    2024-05-29
    55
  • Python Tuples:使用元组提高代码可读性和安全性

    Python Tuples:使用元组提高代码可读性和安全性Python元组是一种有序的、不可变的序列。

    2024-02-14
    93
  • python缩写大全(python缩写词首字母)

    python缩写大全(python缩写词首字母)Python由荷兰数学和计算机科学研究学会的Guido van Rossum 于1990

    2023-11-02
    135
  • 小白系统安装教程_openstack容器化部署

    小白系统安装教程_openstack容器化部署作者:王志斌 编辑:钟华龙 本文来自社区小伙伴 王志斌 的投稿。从小白的角度,带你一步步实现将 RadonDB PostgreSQL 集群部署到 Kubernetes 上。文章分为上下两部分,第一部分

    2023-05-19
    148
  • Mybatis3详解(六)——动态SQL

    Mybatis3详解(六)——动态SQL
    1、动态SQL介绍 if 标签:简单的条件判断。where 标签:相当于where关键字,并且能智能的处理and or ,不必担心多余导致语法错误。set …

    2023-04-05
    150
  • SQL 关联子查询[通俗易懂]

    SQL 关联子查询[通俗易懂]学习重点 关联子查询会在细分的组内进行比较时使用。 关联子查询和 GROUP BY 子句一样,也可以对表中的数据进行切分。 关联子查询的结合条件如果未出现在子查询之中就会发生错误。 一、普通的子查询和

    2023-04-29
    162
  • 数据库进阶「建议收藏」

    数据库进阶「建议收藏」 python关于,mysql的API pymysql模块 pymysql是python中操作MYSQL的模块,其使用方法和py2的MYSQLdb几乎相同。 模块安装 pip install …

    2023-02-22
    159

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注